gpt4 book ai didi

c# - 我应该如何在 msbuild 脚本中引用 sn.exe?

转载 作者:太空狗 更新时间:2023-10-30 00:00:09 27 4
gpt4 key购买 nike

我需要在构建完成后重新签署我的程序集(并且我已经对它做了一些其他的事情),所以我开始添加一个 <Exec>调用的任务 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe .这必须适用于其他开发人员/环境,所以我希望我可以复制 sn.exesn.exe.config从该文件夹中将其存储在我们的代码存储库中,以便我始终可以从已知位置调用它的通用版本。
sn.exe在 sdk 目录之外单独崩溃,所以我想知道如何在不知道它将位于什么路径下的情况下引用它。不同的人有不同的环境(x86 与 x64,不同的安装目录,不同的版本),所以我希望能够轻松引用该工具的最新版本(或者任何版本)。似乎是一个足够简单的工具,也许还有另一种方法可以使用另一个工具/命令/msbuild 任务对程序集进行签名?任何帮助,将不胜感激。

最佳答案

原来有一个名为“GetFrameworkSdkPath”的任务将获取 Windows SDK 位置。从那里,我必须测试以查看 bin 中是否直接存在 sn.exe。文件夹,或者如果它在 bin\NETFX 4.0 Tools\ 中.目前看来还算靠谱。

<PropertyGroup>
<SNExePath>NotSet</SNExePath>
</PropertyGroup>

<!-- Sometimes theres nothing in the WindowsSdkPath dir and there's stuff in a deeper folder called 'NETFX 4.0 Tools'. -->
<Target Name="GetSNPath" BeforeTargets="AfterBuild">
<GetFrameworkSdkPath>
<Output TaskParameter="Path" PropertyName="WindowsSdkPath" />
</GetFrameworkSdkPath>
<PropertyGroup>
<SNExePath>$(WindowsSdkPath)bin\sn.exe</SNExePath>
</PropertyGroup>
<PropertyGroup>
<SNExePath Condition="!Exists($(SNExePath))">$(WindowsSdkPath)bin\NETFX 4.0 Tools\sn.exe</SNExePath>
</PropertyGroup>
</Target>

<Target Name="AfterBuild">
<Exec Command="$(SNExePath) -R $(TargetPath) $(SignatureFile)" />
</Target>

关于c# - 我应该如何在 msbuild 脚本中引用 sn.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com