MyAssugging.XmlSerialulators.dll được tạo để làm gì?


124

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 * .XmlSerialulators.dll đang được tạo. Tại sao tập tin này được tạo tự động và nó được sử dụng để làm gì?


Tôi nghĩ bạn đã biết tại sao nó được tạo ra. nếu không, nó được tạo vì dự án của bạn đang phơi bày một loại dịch vụ web. nó luôn được tạo ra 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 trong thư mục Temp với một tên ngẫu nhiên
AaA

Câu trả lời:


101

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

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


21
Nếu nó được tạo khi cài đặt 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.XMLSerialulators.dll với ứng dụng, liệu nó có được tạo nhanh không?
Rory

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

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

4
**Generate Serialization Assemblies** Specifies whether the compiler will use the XML Serializer Generator Tool (Sgen.exe) to create XML serialization assemblies. Serialization assemblies can improve the startup performance of XmlSerializer if you have used that class to serialize types in your code. By default, this option is set to Auto, which specifies that serialization assemblies be generated only if you have used XmlSerializer to encode types in your code to XML. msdn.microsoft.com/en-us/l
Library / kb4wyys2.aspx

2
Thay đổi thủ công VS2015: nhấp chuột phải vào tên dự án -> Thuộc tính -> Xây dựng -> (Cuộn xuống) Tạo lắp ráp nối tiếp.
Eido95

54

FYI. Các bước chính xác để ngăn XmlSerialulators.dll không được tạo tự động là:

  1. Trong VS, nhấp chuột phải vào tệp dự án của bạn và chọn "Thuộc tính"
  2. Nhấp vào tab "Xây dựng"
  3. Thay đổi menu thả xuống "Tạo lắp ráp nối tiếp" từ "Tự động" thành "Tắt"
  4. Xây dựng lại và nó sẽ biến mất

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

Tôi biết đây là một phản hồi cũ nhưng trong Bản cập nhật 3 của VS2015 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 64bit sau đó ngay cả khi cài đặt thả xuống "Tạo chuỗi nối tiếp" thành "Tắt" sau đó là * .XmlSerialifier. dll vẫn được tạo ra. Ứng dụng của tôi không tham chiếu dịch vụ web ASMX. Có lẽ một lỗi trong VS2015 Update 3?
Peter

6

Tôi nghĩ rằng đây là phần tổng hợp JIT (Just in time) của các bộ nối tiếp XML vì lý do hiệu năng.

Bạn nhận được điều tương tự với các phiên bản RegEx bằng cách sử dụng tùy chọn RegexOptions.Compiled được bật.

Tôi không phải là 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 bằng Sgen.exe [Công cụ tạo tuần tự XML]

Xem Sgen.exe trên MSDN

Thông thường, Sgen.exeđược sử dụng trong các sự kiện Post Build của các dự án. Xem dự án của bạn có một sự kiện xây dựng bài tạo ra*.XmlSerializers.dll


4

Dự án chỉ tạo dự án.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.


1
Ứng dụng WinForms của tôi tạo MyProject.XMLSerialulators.dll khi cài đặt hoặc bật tự động
Kevin Driger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.