如何在 C# 项目的 prebuild 和 postbuild 事件中获取最新的 windows sdk 版本路径?
How to get latest windows sdk version path in prebuild and postbuild event of a C# project?
在我的 Visual Studio 2010 项目中,我们 运行 C# 项目中的预构建和后构建事件如下:
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)$(TargetFileName)";#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\bin .0.17763.0\x86\rc.exe" 和 "C:\Program Files (x86)\Windows Kits\bin.0.17763.0\x86\mt.exe".
但我不能使用上面提到的硬编码路径,因为 Windows SDK 版本在每次 SDK 版本更新时都会更改。
我发现我们可以使用 WindowsSdkverbinpath 变量来获取最新的 windows sdk 版本路径,但在我的例子中这个 我能够像 $(WindowsSdkverbinpath) 一样为 C++ 项目使用它 并且它正在解析路径和 C# 项目我不能像在 C++ 项目中那样使用它。
搜索WindowsSdkverbinpath 的目的是在构建前和构建后事件中使用它来访问mt.exe 和rc.exe
任何人都可以帮助我获得 WindowsSdkverbinPath 以便在 c# 项目的预构建和后构建事件中使用它,提前致谢。
恐怕目前在C#项目中还得不到你想要的。
$(WindowsSdkverbinpath)
和 $(WindowsSdkDir)
目前在 C++
个项目上工作,而不是 C#
个项目。
所以 你无法通过 MSBuild 在 C#
个项目。
如果 你想在 C#
项目上获得最新版本的 Win10 工具包,你必须使用硬编码方法。
因为 打开每个 C# 项目然后更改 rc.exe
和 mt.exe
的路径可能不方便。
所以我建议你可以使用这个:
建议
在您的项目文件夹中创建一个名为 Directory.Build.props 的文件
然后 在该文件中添加这些内容:
<Project>
<PropertyGroup>
<PreBuildEvent>C:\Program Files (x86)\Windows Kits\bin.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# 项目文件夹中。
可能更方便
在我的 Visual Studio 2010 项目中,我们 运行 C# 项目中的预构建和后构建事件如下:
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)$(TargetFileName)";#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\bin .0.17763.0\x86\rc.exe" 和 "C:\Program Files (x86)\Windows Kits\bin.0.17763.0\x86\mt.exe".
但我不能使用上面提到的硬编码路径,因为 Windows SDK 版本在每次 SDK 版本更新时都会更改。
我发现我们可以使用 WindowsSdkverbinpath 变量来获取最新的 windows sdk 版本路径,但在我的例子中这个 我能够像 $(WindowsSdkverbinpath) 一样为 C++ 项目使用它 并且它正在解析路径和 C# 项目我不能像在 C++ 项目中那样使用它。
搜索WindowsSdkverbinpath 的目的是在构建前和构建后事件中使用它来访问mt.exe 和rc.exe
任何人都可以帮助我获得 WindowsSdkverbinPath 以便在 c# 项目的预构建和后构建事件中使用它,提前致谢。
恐怕目前在C#项目中还得不到你想要的。
$(WindowsSdkverbinpath)
和 $(WindowsSdkDir)
目前在 C++
个项目上工作,而不是 C#
个项目。
所以 你无法通过 MSBuild 在 C#
个项目。
如果 你想在 C#
项目上获得最新版本的 Win10 工具包,你必须使用硬编码方法。
因为 打开每个 C# 项目然后更改 rc.exe
和 mt.exe
的路径可能不方便。
所以我建议你可以使用这个:
建议
在您的项目文件夹中创建一个名为 Directory.Build.props 的文件
然后 在该文件中添加这些内容:
<Project>
<PropertyGroup>
<PreBuildEvent>C:\Program Files (x86)\Windows Kits\bin.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# 项目文件夹中。
可能更方便