【发布时间】:2021-06-18 06:53:19
【问题描述】:
为了自动化构建,我使用了一个带有路径环境变量名称的 props 文件,该路径环境变量可能(或可能不)在计算机中。 (希望以后能加个条件)
我的 props 文件是这样的:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MyVersion>EnvVarPath</MyVersion>
</PropertyGroup>
</Project>
然后我在我的 csproj 文件中导入该道具文件并使用复制任务复制文件尝试使用 $(MyVersion) ,如下所示:
<Target Name="Copy1File" AfterTargets="Build">
<Message Text="$(MyVersion)" Importance="high" />
<Copy
SourceFiles="$(ProjectDir)File.xml"
DestinationFolder="$(MyVersion)folder\File.xml"
/>
MyVersion var 计算结果为“EnvVarPath”字符串,但不是 env 变量的值。我也尝试在 props 文件中使用 %EnvVarPath%,但它的计算结果也为“%EnvVarPath%”(可以复制到文件资源管理器并工作),但不计算为 msbuild 的路径本身。
如何在我的构建中获得该路径值?
【问题讨论】:
-
尝试删除
<MyVersion>EnvVarPath</MyVersion>,因为它实际上覆盖了变量值。 -
感谢@VladimirSerykh,但如果我删除它,我无法自动化我需要更改每个版本的 env 版本,所以很遗憾,这不是一个选项
-
所有环境变量都作为属性公开。所以你不能只做
<MyVersion>$(EnvVarPath)</MyVersion>还是我错过了什么?如果确实有必要,您也可以在命令行/p:MyVersion=%EnvVarPath%上传递参数,但不应该 -
谢谢pinkfloydx33。
xxxx 是我自动化和更改每个版本的东西,所以很遗憾我不能使用 env 变量。
标签: c# msbuild environment-variables msbuild-task