以编程方式修改 .csproj 文件
我有 Entlib 5.0 的源代码,我需要使用我自己的密钥(snk 文件)对所有程序集进行签名。
最简单的方法是在 Visual Studio 2010 中打开 EnterpriseLibrary.2010 解决方案文件,对于每个项目,选择属性 -> 签名,然后选择签署程序集 最后选择您的密钥文件。
但我不想手动执行此操作,那么我可以编写一个脚本来手动编辑项目文件,并在 PropertyGroups
当前列表的末尾插入以下内容:
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
C# 或脚本中的任何帮助程序类是否有更好的简单快捷的方法?
I have source code of Entlib 5.0 and I need sign all assemblies using my own key (snk file).
The easiest way would be to open the EnterpriseLibrary.2010 solution file in Visual Studio 2010 and for each project, select Properties->Signing then select Sign the Assembly and finally select your key file.
But I don't want to manually do that then I could write a script to manually edit the project files and insert the following at the end of the current list of PropertyGroups
:
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
Any helper class in C# or scripting if were better for do it easy and quick way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以查看 Microsoft.Build.BuildEngine 命名空间MSDN 链接
示例代码:
我最近使用类似的方法对公司的所有 .csproj 文件(超过 200 个)进行一系列更改,而不是手动打开每个项目并进行更改。
希望这有帮助。
You can take a look at the Microsoft.Build.BuildEngine namespace MSDN Link
Sample code:
I recently used something similar to make a series of changes across all of my company's .csproj files (over 200) instead of manually opening each project and making changes.
Hope this helps.
正如一些人指出的另一个答案,引擎现在已被弃用,人们应该使用 Microsoft.Build.Evaluation 但是,如果您使用 .netstandard ,它将针对可能引发错误的旧框架。
另一种选择是调用此 dotnet 工具:
https://www.nuget.org/packages/ dotnet-property
最后一个选择是在构建时执行此操作(无需工具)
As some have noted the other answer that Engine is now deprecated and people should use Microsoft.Build.Evaluation however Evaluation if you are using .netstandard it will target an older framework which can throw errors.
An another option is to call this dotnet tool:
https://www.nuget.org/packages/dotnet-property
A final option would be to do this at build time (without a tool)