繁体   English   中英

如何在 C# 项目的预构建和后构建事件中获取最新的 Windows sdk 版本路径?

[英]How to get latest windows sdk version path in prebuild and postbuild event of a C# project?

在我的 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:\\ Program Files (x86)\\Windows Kits\\10\\bin\\10.0.17763.0\\x86\\mt.exe”。

但是我不能使用上面提到的硬编码路径,因为每次 SDK 版本更新都会更改 Windows SDK 版本。

我发现我们可以使用WindowsSdkverbinpath变量来获取最新的 Windows sdk 版本路径,但在我的情况下,我可以像 $(WindowsSdkverbinpath) 一样使用它来处理 c++ 项目,并且它正在解析我无法解析的路径和 c# 项目像在 C++ 项目中一样使用它。

搜索 WindowsSdkverbinpath 的目的是在 prebuild 和 postbuild 事件中使用它来访问 mt.exe 和 rc.exe

请任何人都可以帮助我让 WindowsSdkverbinPath 在 ac# 项目的预构建和后构建事件中使用它,提前致谢。

恐怕到目前为止你在C#项目中得不到你想要的。

到目前为止, $(WindowsSdkverbinpath)$(WindowsSdkDir)适用于C++项目而不是C#项目。

因此,您无法通过MSBuildC#项目上获取最新版本的Win10 套件

如果你想在C#项目上获得最新版本的Win10 工具包,你必须使用硬编码的方法。

由于打开每个 C# 项目然后更改rc.exemt.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# 项目文件夹中。

可能会更方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM