Visual studio 如何获取项目预构建事件属性的文本字符串值

Visual studio 如何获取项目预构建事件属性的文本字符串值,visual-studio,powershell,windows-installer,nuget,Visual Studio,Powershell,Windows Installer,Nuget,对于我的工作,我必须在powershell脚本中定义一个预构建事件,该事件将添加到我安装NuGet软件包的目标项目中。脚本第一次安装时安装良好,预构建事件按如下方式添加: xcopy $(SolutionDir)Some\Path $(ProjectDir)Some\Other\Path 当我卸载并再次安装NuGet软件包时,会从目标项目请求现有的预构建事件。问题是,在预构建事件中使用环境变量$(ProjectDir)或$(SolutionDir)时,我的powershell脚本会获取与该变量

对于我的工作,我必须在powershell脚本中定义一个预构建事件,该事件将添加到我安装NuGet软件包的目标项目中。脚本第一次安装时安装良好,预构建事件按如下方式添加:

xcopy $(SolutionDir)Some\Path $(ProjectDir)Some\Other\Path
当我卸载并再次安装NuGet软件包时,会从目标项目请求现有的预构建事件。问题是,在预构建事件中使用环境变量$(ProjectDir)或$(SolutionDir)时,我的powershell脚本会获取与该变量关联的值。像这样:

c:\Path\To\Solution\Dir
或:

但是我想让它给我一个字符串,里面有env变量。 如何从powershell中的预构建事件中获取文本值

提姆

更新::

我做了更多的研究,并得出结论,构建事件中的环境变量不会被替换,除非它是Windows Installer项目

如何获取项目预构建事件属性的文本字符串值


好的,您无法获取项目预构建事件属性的文本字符串值。因为宏是由展开的,这甚至发生在编译代码之前。这是一个纯粹的文本替换。

是否有其他方法可以设置项目的预构建事件,并且当其他人拥有我的代码时,他仍然可以使用相同的预构建事件来构建项目?@iPhantomGuy,这个问题的关键不在于您可以在何处设置项目的预构建事件,但是,仅仅因为您在生成事件中使用了环境变量“$(ProjectDir)”、“$(SolutionDir)”,这些变量就被视为生成事件中宏的默认变量名。因此,要解决这个问题,您应该使用另一个ID更改这些环境变量,例如“$(PathForProjectDir)”。那么我在哪里定义该变量呢?如果其他人安装了我的软件包,然后尝试在不做任何其他事情的情况下构建它,它还会工作吗?
C:\Path\To\Project\Dir