Tôi đã trả tiền Hans để trả lời câu hỏi này, nhưng sau khi một số thử nghiệm tôi đã có một giải pháp mà đến hơi gần nhà:
thế nào để lập CIL/MSIL TRONG VISUAL STUDIO
Các sau hack được bạn một dự án mà:
- Tôn trọng cấu hình gỡ lỗi và phát hành bản phát hành trong Visual Studio.
- Tùy chọn ký hợp đồng CIL kết quả với tệp khóa được thiết lập trong tùy chọn dự án.
- Có thể được thêm vào điều khiển nguồn.
Thực hiện theo các bước sau:
- Tạo một trống rỗng C# classs thư viện
- Trong thư mục giải pháp, nhấn chuột phải dự án và chọn "dự án dỡ bỏ"
- Nhấp chuột phải vào dự án dỡ và chọn "chỉnh sửa dự án"
- Trong tệp csprof, cuộn xuống dưới cùng và tìm dòng có nội dung "Nhập ... Project =" $ (MSBuildBinPath) \ Microsoft.CSharp.targets "và thay thế bằng mã tại http://pastebin.com/KEJtyQLu (sao chép dưới đây)
Đây là XML:
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile" Inputs="$(MSBuildAllProjects);@(Compile);" Outputs="@(IntermediateAssembly);$(NonExistentFile);">
<GetFrameworkPath>
<Output TaskParameter="Path" PropertyName="FrameworkPath" />
</GetFrameworkPath>
<PropertyGroup>
<IlAsmCommand>"$(FrameworkPath)\Ilasm.exe" /NOLOGO /DLL /OUTPUT:"@(IntermediateAssembly)" </IlAsmCommand>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' " >
<IlAsmCommand>$(IlAsmCommand) /DEBUG </IlAsmCommand>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' " ><IlAsmCommand>$(IlAsmCommand) /OPTIMIZE </IlAsmCommand></PropertyGroup>
<PropertyGroup Condition=" '$(AssemblyOriginatorKeyFile)' != '' " >
<IlAsmCommand>$(IlAsmCommand) /KEY:"$(AssemblyOriginatorKeyFile)" </IlAsmCommand>
</PropertyGroup>
<Exec Command="$(IlAsmCommand) @(Compile->'"%(FullPath)"', ' ')"
Outputs="@(IntermediateAssembly)" />
<CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''" />
</Target>
Tôi có thể hỏi tại sao bạn thực sự cần phải biên dịch với IL? C#/VB.NET/F # không thể làm gì? – leppie
@Leppie - Đó là một chủ đề phù hợp cho cuộc tranh luận dài, đủ để nói rằng có (được thừa nhận là ít) những điều dễ dàng hơn để đạt được với IL hơn với C# hoặc VB - đặc biệt khi tạo Generics làm việc với các đại biểu. IL, naughtily, cho phép bạn tự động pcik và chọn các đối số để đẩy vào ngăn xếp trước khi gọi một phương pháp. C# và VB thì không.Thông thường một điều tốt, nhưng đôi khi uốn các quy tắc mở ra cánh cửa mới. Các đại biểu năng động là một ví dụ về điều này. – Mark
@Mark, bạn có thể nói ngắn gọn (hoặc cung cấp liên kết đến) những gì bạn có thể cải thiện cho các đại biểu bằng MSIL? Điều này có thể giúp bạn viết các phương thức hoạt động cho tất cả các loại đại biểu không? –