Visual studio 2015 MSBUILD 14.0 Visual Studio 2015 CustomBuild命令环境不包含SetEnv的结果,即使Exec包含

Visual studio 2015 MSBUILD 14.0 Visual Studio 2015 CustomBuild命令环境不包含SetEnv的结果,即使Exec包含,visual-studio-2015,nuget,vcxproj,msbuild-14.0,Visual Studio 2015,Nuget,Vcxproj,Msbuild 14.0,我使用CoApp创建了一个nuget包来打包一些代码生成器(二进制文件)。我希望能够在msbuild custombuild步骤中使用这些代码生成器来生成代码 我有一个目标文件,它定义了以下内容(使用CoApp) 不包含通过SetEnv设置的我想要的路径 我想这样做,以便可以调用在自定义构建步骤中通过nuget打包的代码生成器 我知道custombuild中的命令通过/在新cmd中运行,并且环境是通过设置的用户或系统环境继承的。此外,我还可以使用/p:useev启动Msbuild,并因此泵送我想

我使用CoApp创建了一个nuget包来打包一些代码生成器(二进制文件)。我希望能够在msbuild custombuild步骤中使用这些代码生成器来生成代码

我有一个目标文件,它定义了以下内容(使用CoApp)

不包含通过SetEnv设置的我想要的路径

我想这样做,以便可以调用在自定义构建步骤中通过nuget打包的代码生成器

我知道
custombuild
中的
命令
通过/在新cmd中运行,并且环境是通过设置的用户或系统环境继承的。此外,我还可以使用
/p:useev
启动Msbuild,并因此泵送我想要的任何环境。在我看来,使用
/p:useev
相当于硬编码路径——提前知道它


<>我希望能够更新我的包并运行,也就是说,我希望项目管理它在被导入的目标文件中定义的路径。

看起来C++有一些方法可以支持二进制文件的包更新。标题(ClCompile>AdditionalIncludeDirectories)和libs(Link>Additionaldependencies)都很好

我想继续使用自定义构建,因为它是通过标准visual studio属性表公开的,而自定义目标则不是(除非您自定义属性表,从而引入了并非所有人都熟悉的内容,否则将忘记安装,然后抱怨)因此,我希望通过下一次产品更新获得产品级解决方案。这看起来不太可能

<>我一直想继续使用环境变量方法,因为CoApp为NuGET包做了它为C++二进制文件创建的方法。更改目标文件非常简单。(不使用CoApp的Write NugetPackage,而是使用nuget pack)

custombuild命令不会像这样展开msbuild属性集

$(MSBuildThisFileDirectory)/。///build/native/bin/x64\v90\Release
就像

$(HabitatBindir)aemcomp.exe-nonotice-mlf-dll%(标识)
targetexec属性是我能想到的最好的组合

当我知道如何发布大量双引号和单引号文本时,是否会在下面发布代码

<SetEnv Condition="'$(Platform.ToLower())' == 'x64' And '$(PlatformToolset.ToLower())' == 'v100' And ( $(Configuration.ToLower().IndexOf('debug')) == -1 )" Name="PATH" Prefix="true" Value="$(MSBuildThisFileDirectory)../..//build/native/bin/x64\v100\Release;">
  <Output TaskParameter="OutputEnvironmentVariable" PropertyName="PATH" />
</SetEnv>
<Import Project="..\packages\habitat.id.redist.1.0.0.5\build\native\habitat.id.redist.targets" Condition="Exists('packages\habitat.id.1.0.0.1\build\native\habitat.id.targets')" />
<Exec Command="echo %PATH%"/>
<CustomBuild Include="..\directory\filename">
  <FileType>Document</FileType>
  <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  echo $(PATH)
</Command>