在开始构建之前如何修改环境变量(不修改项目文件)
这比我之前的问题又进一步:我的上一个问题:
我把开发区域从 "C:\Development\workarea" 拆分为 "C:\Development\workarea\v1"、"C:\Development\workarea\v2" 等等,但现在又出现了一个问题:
构建过程基于一个环境变量 VSBuildPath,当前它被设为 C:\Development\workarea,但你可以想象这需要改成 C:\Development\vx(其中 vx 是我将要工作的版本)。
我当然可以创建一个预构建事件,如下所示:
set VSBuildPath=C:\Development\workarea\v1
……但这会在我的项目中创建以下条目(在 *.vcxproj 文件中):
<PreBuildEvent>
<Command>set VSBuildPath=C:\Development\workarea\v1</Command>
</PreBuildEvent>
<PreBuildEvent>
<Message>Set environment variable</Message>
</PreBuildEvent>
我不想这样:我不希望在我的个人电脑上以这种特定方式工作时修改项目文件。
我该如何实现?
也许可以通过 *.vcxproj.user 文件?
我应该如何处理这个?
……如果我在 *.vcxproj.user 文件中执行那条 set ...=... 命令,构建阶段是否会考虑到这个新值,如同真实的 *.vcxproj 文件所描述的那样?
我需要为每个单独的项目定义吗,还是可以在 *.sln 文件中定义?(是否存在 *.sln.user 文件?)
解决方案
显然有一个更好的解决方案:文件 "Directory.Build.props"。在其中你可以为一个环境变量定义一个新的值,只要你在该目录下使用Visual Studio,就会生效。
该文件的内容应如下所示:
<Project>
<PropertyGroup>
<VSBuildPath>C:\Development\workarea\v1</VSBuildPath>
</PropertyGroup>
</Project>
在开始构建时,你可能会在构建输出中看到以下内容:
14:30:32:835 >C:\Development\workarea\v1\Directory.Build.props(3,5):
message : Property reassignment:
$(VSBuildPath)="C:\Development\workarea\v1"
(previous value: "C:\Development\workarea\") at
C:\Development\workarea\v1\Directory.Build.props (3,5)
,这也证明确实在起作用。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。