以编程方式修改 .csproj 文件

发布于 2024-12-11 22:28:00 字数 595 浏览 0 评论 0原文

我有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

究竟谁懂我的在乎 2024-12-18 22:28:00

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

示例代码:

Engine eng = new Engine()
Project proj = new Project(eng);
proj.Load(FullProjectPath);
proj.SetProperty("SignAssembly", "true");
proj.Save(FullProjectPath);

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

希望这有帮助。

You can take a look at the Microsoft.Build.BuildEngine namespace MSDN Link

Sample code:

Engine eng = new Engine()
Project proj = new Project(eng);
proj.Load(FullProjectPath);
proj.SetProperty("SignAssembly", "true");
proj.Save(FullProjectPath);

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.

陈独秀 2024-12-18 22:28:00

正如一些人指出的另一个答案,引擎现在已被弃用,人们应该使用 Microsoft.Build.Evaluation 但是,如果您使用 .netstandard ,它将针对可能引发错误的旧框架。

另一种选择是调用此 dotnet 工具:

https://www.nuget.org/packages/ dotnet-property

dotnet property "**/Project.csproj" AssemblyOriginatorKeyFile:"keyFile.snk"

最后一个选择是在构建时执行此操作(无需工具)

dotnet build /p:AssemblyOriginatorKeyFile=keyFile.snk

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

dotnet property "**/Project.csproj" AssemblyOriginatorKeyFile:"keyFile.snk"

A final option would be to do this at build time (without a tool)

dotnet build /p:AssemblyOriginatorKeyFile=keyFile.snk
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文