2013-06-03 23 views
6

Tôi biết đây là một câu hỏi lập dị, nhưng trong Visual Studio 2010 C# .Net là có một cách để đặt tên một hội đồng với một phần mở rộng khác với DLL. Ví dụ: MyAssembly.MLL thay vì MyAssembly.DLL.Có thể DLL trong .NET sử dụng một phần mở rộng khác, ví dụ: MLL?

Tôi chọc xung quanh nhưng không thể tìm được cách để thực hiện.

+11

Tại sao bạn muốn thực hiện việc này? Những gì bạn đứng để đạt được từ nó? – Arran

+4

Bạn có thể mở rộng về ý định đằng sau thay đổi đó không? – rae1

+2

Bạn chỉ có thể thực hiện một bước postbuild mà không 'đổi tên foo.dll foo.whackyshit'. Nhưng tôi cũng tò mò về lý do tại sao bạn muốn làm điều đó. –

Trả lời

10

Không, tôi không tin như vậy - ít nhất không phải không có nhiều công việc phụ.

Tôi vừa thử với bước đổi tên thủ công và mặc dù bạn có thể biên dịch đối với một hội đồng được đổi tên, nó sẽ không được tìm thấy tại thời điểm thực thi. Mã sẽ chứa tham chiếu đến MyAssembly và thời gian chạy sẽ cố gắng giải quyết điều đó đến MyAssembly.dllMyAssembly.exe ... nhưng sẽ không biết tên tệp thực tế bạn đã sử dụng. Đó là có thể có cách định cấu hình điều này trong phạm vi app.config hoặc sử dụng AppDomain.AssemblyResolve để tự giải quyết hội đồng - nhưng tôi nghi ngờ những điều khác có thể bị hỏng.

Ngoài bất kỳ điều gì khác, tôi sẽ không khuyến khích bạn thực hiện việc này chỉ về mặt độc đáo. Bạn sẽ ngạc nhiên các nhà phát triển, công cụ khác - không phải là một ý tưởng hay.

+0

Chính xác. Điều tương tự đối với tên tệp ngắn. Windows Installer có một kiểu dữ liệu được sử dụng bởi các bảng Directory và File để hỗ trợ tên ngắn trên các hệ thống kế thừa. .NET không thích điều này chút nào. –

+0

+1. Nhưng tôi có nghĩ rằng anh ta có thể * tải nó thông qua 'Assembly.CreateInstanceFromAndUnwrap', ví dụ (và tôi không có nghĩa là insinuating anh * nên *!) –

+0

@ Moo-Juice: Hoặc AppDomain.AssemblyResolve, như tôi ' đã viết trong câu trả lời đã chỉnh sửa. Có thể một trong hai thứ đó sẽ có hiệu quả, nhưng tôi sẽ không cố gắng hết sức để tìm ra. –

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