问题描述
在我的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”-清单“ $(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 \ 10 \ bin \ 10.0.17763.0 \ x86 \ rc.exe”和“ C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.17763.0 \ x86 \ mt.exe”。
但是我不能使用上面提到的硬编码路径,因为随着Windows SDK版本的每次SDK更新而更改。
我发现我们可以使用 WindowsSdkverbinpath 变量来获取最新的Windows sdk版本路径,但是对于我来说,这个我可以像$(WindowsSdkverbinpath)一样将其用于c ++项目,它正在解决路径和C#项目,我无法像在c ++项目中那样使用它。
搜索WindowsSdkverbinpath的目的是在构建前和构建后事件中使用它来访问mt.exe和rc.exe
请任何人帮助我获取WindowsSdkverbinPath以便在c#项目的prebuild和postbuildevents中使用它。
解决方法
恐怕到目前为止,您无法在C#项目中得到想要的东西。
$(WindowsSdkverbinpath)
和$(WindowsSdkDir)
在C++
项目上工作,而不是到目前为止的C#
项目。
因此,您无法通过 MSBuild 在C#
项目上获得最新版本的 Win10套件。
如果您想在C#
项目上获得最新版本的 Win10套件,则必须使用硬编码方法。
自以来,打开每个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#项目文件夹中。
可能会更方便。