以编程方式修改csproj文件

Kiq*_*net 7 xml projects-and-solutions linq-to-xml csproj visual-studio-2010

我有Entlib 5.0的源代码,我需要使用自己的密钥(snk文件)对所有程序集进行签名.

最简单的方法是在Visual Studio 2010中打开EnterpriseLibrary.2010解决方案文件,然后为每个项目选择Properties-> Signing并选择Sign the Assembly,然后选择您的密钥文件.

但我不想手动执行该操作,然后我可以编写脚本来手动编辑项目文件,并在当前PropertyGroups列表的末尾插入以下内容:

<PropertyGroup>
    <SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
    <AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

C#中的任何帮助类或脚本编写是否更好,方便快捷?

小智 21

您可以查看Microsoft.Build.BuildEngine命名空间MSDN链接

示例代码:

Engine eng = new Engine()
Project proj = new Project(eng);
proj.Load(FullProjectPath);
proj.SetProperty("SignAssembly", "true");
proj.Save(FullProjectPath);
Run Code Online (Sandbox Code Playgroud)

我最近使用类似的东西对我公司的所有.csproj文件(超过200个)进行了一系列更改,而不是手动打开每个项目并进行更改.

希望这可以帮助.