C# 如何在C项目的预构建和后构建事件中获取最新的windows sdk版本路径?
在我的Visual Studio 2010项目中,我们正在C项目中运行预构建和后构建事件,如下所示: prebuildevent:C:\Program Files x86\Microsoft SDK\Windows\v7.0A\Bin\rc.exe$ProjectDir$ProjectName.rc postbuildevent:C:\Program Files x86\Microsoft SDK\Windows\v7.0A\Bin\mt.exe-manifest$ProjectDir$TargetName.exe.manifest-outputresource:$TargetDir$TargetFileName;一, 其中,rc.exe和mt.exe的路径是针对Visual Studio 2010硬编码的。现在,我们正在从VisualStudio2010迁移到VisualStudio2019 在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版本C# 如何在C项目的预构建和后构建事件中获取最新的windows sdk版本路径?,c#,visual-studio,msbuild,visual-studio-2019,mt,C#,Visual Studio,Msbuild,Visual Studio 2019,Mt,在我的Visual Studio 2010项目中,我们正在C项目中运行预构建和后构建事件,如下所示: prebuildevent:C:\Program Files x86\Microsoft SDK\Windows\v7.0A\Bin\rc.exe$ProjectDir$ProjectName.rc postbuildevent:C:\Program Files x86\Microsoft SDK\Windows\v7.0A\Bin\mt.exe-manifest$ProjectDir$Targ
我发现我们可以使用WINDOWSKDVBILINVROW变量获取最新的Windows SDK版本路径,但是在我的例子中,我可以使用它,像C++项目的$WINDOWSKDVBILINFROW,它解决了路径和C项目,我不能像C++项目那样使用它。 搜索WindowsSdkverbinpath的目的是在预构建和后构建事件中使用它来访问mt.exe和rc.exe
请任何人帮助我获取WindowsSdkverbinPath,以便在c项目的预构建和后构建事件中使用它,提前谢谢。恐怕您目前无法在c项目中获得所需的内容
$WOWDOSSKVBILPATH和$WOWOSSDKDIR在C++项目上工作,而不是C项目。 因此,您无法通过C项目上的MSBuild获取最新版本的Win10工具包
如果您想在C项目上获得最新版本的Win10工具包,必须使用硬编码方法 因为打开每个C项目,然后更改rc.exe和mt.exe的路径可能会不方便 所以我建议你可以用这个: 暗示 在项目文件夹中创建名为的文件 然后在该文件上添加以下内容:<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项目文件夹中
这可能更方便。恐怕到目前为止,您无法在C项目中获得您想要的东西
$WOWDOSSKVBILPATH和$WOWOSSDKDIR在C++项目上工作,而不是C项目。 因此,您无法通过C项目上的MSBuild获取最新版本的Win10工具包
如果您想在C项目上获得最新版本的Win10工具包,必须使用硬编码方法 因为打开每个C项目,然后更改rc.exe和mt.exe的路径可能会不方便 所以我建议你可以用这个: 暗示 在项目文件夹中创建名为的文件 然后在该文件上添加以下内容:<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项目文件夹中
这可能更方便。@PavelAnikhouski感谢您的回复,我正在寻找C:\Program Files x86\Windows Kits\10\bin\10.0.*.0中的mt.exe和rc.exe可执行文件,这里有多个sdk版本,我应该能够在C项目中使用该路径。在C++项目中,如果我使用$WOWDOSSKVLINBROWPAT\MT.EXE,它将采用最新的SDK版本,但是对于C项目的预构建,这个语法和变量我不能使用。@ PaveliikHokKi感谢答复,我在MT:EXE和R.EXE可执行文件中寻找C:\程序文件x86 \ Windows工具包\ 10 \bin 10。* 0,这里有多个sdk版本,我应该能够在c项目中使用该路径。在C++项目中,如果我使用$WOWDOSSKVBILPATH\MT.EXE,它将采用最新的SDK版本,但是对于C项目的预构建,我无法使用这个语法和变量。