2009-06-01 25 views
109

Tôi đang làm việc trên một dự án tạo ra một hội đồng. Tôi chỉ nhận thấy rằng một hội đồng bổ sung *. XmlSerializers.dll đang được tạo ra. Tại sao tệp này được tạo tự động và tệp được sử dụng để làm gì?MyAssembly.XmlSerializers.dll được tạo ra để làm gì?

+0

Tôi nghĩ bạn đã biết tại sao nó được tạo. nếu không, nó được tạo ra bởi vì dự án của bạn đang trưng ra một loại webservice. nó luôn được tạo trong thời gian biên dịch hoặc trong thời gian chạy. trong thời gian chạy nó được tạo ra trong thư mục Temp với một tên ngẫu nhiên – AaA

Trả lời

84

Thực hiện .NET, XmlSerializer tạo ra một phiên bản tạm thời để tuần tự hóa/deserializing lớp học của bạn (vì lý do hiệu suất). Nó có thể được tạo ra trên bay (nhưng phải mất thời gian trên mỗi lần thực hiện), hoặc nó có thể được pregenerated trong quá trình biên dịch và lưu trong hội đồng này bạn đang hỏi về.

Bạn có thể thay đổi hành vi này trong tùy chọn dự án (tab Compile ->nâng cao Compile Tùy chọn ->Tạo cụm serialization, Auto hoặc On, tương ứng). Phần tử tương ứng trong tệp dự án là GenerateSerializationAssemblies, ví dụ: <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>.

+17

Nếu nó được tạo ra khi thiết lập dự án là Tự động, điều đó có nghĩa là nó cần thiết? điều gì xảy ra nếu bạn không triển khai X.XMLSerializers.dll với ứng dụng, nó sẽ được tạo ra khi đang bay? – Rory

+1

Vì vậy, làm thế nào để đi về tải trước các hội đồng? – Carlo

+0

@Rory, tôi biết câu hỏi này là cũ, nhưng có vẻ như vậy. Ba dự án của tôi đã được đặt thành 'Auto', nhưng chỉ có một dự án tạo ra một DLL tuần tự hóa. – ps2goat

6

Tôi nghĩ đây là trình biên dịch JIT (Chỉ trong thời gian) của các serialis XML cho các lý do hiệu suất.

Bạn nhận được cùng một điều với trường hợp RegEx sử dụng tùy chọn RegexOptions.Compiled được bật.

Tôi không có chuyên gia .NET CLR, xin lỗi vì thiếu chi tiết kỹ thuật chính xác.

5

*.XmlSerializers.dll được tạo ra bằng cách sử dụng sgen.exe [XML Serializer Generator Công cụ]

Xem Sgen.exe on MSDN

Điển hình Sgen.exe được sử dụng trong bài viết Xây dựng các sự kiện của dự án. Xem dự án của bạn có sự kiện xây dựng bài đăng tạo ra *.XmlSerializers.dll

45

FYI. Các bước chính xác để ngăn chặn sự XmlSerializers.dll khỏi bị tự động tạo ra là:

  1. Trong VS, kích chuột phải vào tập tin dự án của bạn và chọn "Properties"
  2. Nhấp vào "Xây dựng" tab
  3. Thay đổi "tạo lắp ráp serialization" thả xuống từ "tự động" sang "Off"
  4. Rebuild và nó sẽ biến mất
+14

Vâng, nhưng câu hỏi là ** tại sao ** nó được tạo ra! – Hemant

+0

Tôi biết đây là câu trả lời cũ nhưng trong Bản cập nhật VS2015 3 trên ứng dụng Winforms nhắm mục tiêu .NET 2.0 x86 khi được biên dịch trên hệ thống Win10 Ent 64 bit, ngay cả khi cài đặt "Tạo chuỗi hội tụ tuần tự" thành "Tắt" thì * .XmlSerializers .dll vẫn được tạo. Ứng dụng của tôi tham chiếu dịch vụ web ASMX. Có lẽ một lỗi trong bản cập nhật VS2015 3? – Peter

4

dự án chỉ tạo ra project.XMLSerialisers.dll cho các ứng dụng web. Đối với các ứng dụng khác, bạn phải chạy sgen riêng biệt.

+1

Ứng dụng WinForms của tôi tạo MyProject.XMLSerializers.dll khi cài đặt nó hoặc tự động –

Các vấn đề liên quan