c# - 如何在 C# 项目的 prebuild 和 postbuild 事件中获取最新的 windows sdk 版本路径?
问题描述
在我的 Visual Studio 2010 项目中,我们在 C# 项目中运行 prebuild 和 postbuildevent,如下所示:
prebuildevent: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\rc.exe" "$(ProjectDir)$(ProjectName).rc"
postbuildevent: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" -outputresource:"$(TargetDir )$(目标文件名)";#1
其中,rc.exe 和 mt.exe 的路径是为 Visual Studio 2010 硬编码的。现在我们正在从 Visual Studio 2010 迁移到 Visual Studio 2019。
在 Visual Studio 2019 中,rc.exe 和 mt.exe 存在于以下路径中:“C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\rc.exe”和“C:\程序文件 (x86)\Windows 工具包\10\bin\10.0.17763.0\x86\mt.exe”。
但我不能使用上面提到的硬编码路径,因为 Windows SDK 版本会随着每个 SDK 版本更新而改变。
我发现我们可以使用WindowsSdkverbinpath变量来获取最新的 windows sdk 版本路径,但在我的情况下,我可以像 $(WindowsSdkverbinpath) 一样将它用于 c++ 项目,它正在解析路径和我无法的 c# 项目像在 c++ 项目中一样使用它。
搜索 WindowsSdkverbinpath 的目的是在 prebuild 和 postbuild 事件中使用它来访问 mt.exe 和 rc.exe
请任何人都可以帮助我让 WindowsSdkverbinPath 在 ac# 项目的 prebuild 和 postbuildevents 中使用它,在此先感谢。
解决方案
恐怕到目前为止您无法在 C# 项目中得到您想要的东西。
$(WindowsSdkverbinpath)
并且$(WindowsSdkDir)
从事C++
项目而不是C#
迄今为止的项目。
所以你无法通过MSBuild在项目上获得最新版本的Win10 工具包。C#
如果你想在项目中获得最新版本的Win10 套件C#
,你必须使用硬编码的方法。
由于打开每个 C# 项目,然后更改路径,rc.exe
可能mt.exe
会很不方便。
所以我建议你可以使用这个:
建议
在您的项目文件夹中创建一个名为Directory.Build.props的文件
然后在该文件上添加这些内容:
<Project>
<PropertyGroup>
<PreBuildEvent>C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\rc.exe "$(ProjectDir)$(ProjectName).rc"</PreBuildEvent>
<PostBuildEvent>"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" -outputresource:"$(TargetDir)$(TargetFileName)";#1</PostBuildEvent>
</PropertyGroup>
</Project>
并且该文件将在构建过程中集成到您的项目中。您只需修改文件并更改 sdk 版本一次,然后保存该文件。将该文件复制到每个 C# 项目文件夹中。
可能会更方便。
推荐阅读
- sql - 从顺序数据中选择分组数据
- python - 有没有办法使元数据无效并从 CDSW 中的 python 代码重建索引?
- python - Alpha_Vantage API 返回不正确的时间序列数据
- regex - 根据多个标准计算连续天数/发生次数
- c# - 如何创建和使用仅包含资产的 nuget 包?
- python - 如何管理多个 Ironpython 版本?
- arrays - 计算递归函数内部接收到的数据
- odata - 来自 Postman 的测试 OData Batch 请求
- javascript - 在节点js中获取空数组
- c++ - 如何在 Hololens 上使用 DepthCorrelatedCoordinateMapper