2

我的解决方案中有七个代码库项目,并且我有 3 个不同类型的网站,它们使用来自 VSS 的相同代码库项目。

现在我想将构建后脚本放入我的一个参考代码库项目中,以便在构建完成时将一个特定的 DLL 放入我的网站 bin 目录中。

例如,我有一个名为“references”的参考项目,并且在其项目属性中将放置以下代码以获取解决方案网站 bin 目录。

xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Ibe.UI\Bin

以上内容对于我的一个名为“Com.Emirates.Pss.Ibe.UI”的网站项目来说工作正常,问题出现在一位用户签入“参考”项目,然后其他开发人员采用它获得的最新参考项目“ Com.Emirates.Pss.Ibe.UI”在其后期构建脚本中,但其解决方案网站目录为“Com.Emirates.Pss.MYBooking.UI”。

如何使 xcopy /Y $(ProjectDir)Tridion $(SolutionDir) Com.Emirates.Pss.Ibe.UI \Bin (粗体部分是动态的,以便签入用户的人可以轻松地构建应用程序而无需进行更改.

4

3 回答 3

4

这是所有不同的构建后事件宏的列表。

我猜你想使用$(ProjectDir)宏,如果我理解正确的话?

如果您使用的是 MSBuild,则另一个选项可以在 VS 中添加用户定义的宏变量,创建您自己的属性表,如示例所示:

<PropertyGroup Label="UserMacros">
      <MyProj>Com.Emirates.Pss.Ibe.UI</MyProj>
</PropertyGroup>

用法:xcopy /Y $(ProjectDir)Tridion $(SolutionDir)$(MyProj)\Bin

最后一个选项是在 MAIN 项目(将在之前运行)中设置一个具有特定项目名称的环境变量,并从references项目中引用它。

例如

在项目 #1 中设置一个Pre -Build 事件: SETX MyProj Com.Emirates.Pss.Ibe.UI

在参考项目中,使用复制它 xcopy /Y $(ProjectDir)Tridion $(SolutionDir)%MyProj%\Bin

应该注意的是,SETX 和 SET 之间的区别在于,即使在 CMD 窗口(运行 MSBuild)关闭后,SETX 也会保留变量。但是,您可能必须在第一次运行它时关闭并重新打开 Visual Studio,因为它是使用 SETX 创建的变量,仅开始在使用此命令之后创建的任何 CMD 窗口上工作。

于 2012-10-23T12:17:17.053 回答
0

我只是将 $(SolutionDir) 作为参数传递给您在 PostBuild 事件命令行中调用的 .cmd 文件。同样,如果您想要 $(ProjectName) 或 PostBuild cmd 中可访问的任何其他 VS 宏。

于 2012-10-23T12:13:12.783 回答
0

我通过将以下代码放入“引用”项目 PostBuildEvent 中解决了我的问题:

if $(SolutionName) == IbeUI-Integrated  xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Ibe.UI\Bin
if $(SolutionName) == MybUI-Integrated  xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Myb.UI\Bin
if $(SolutionName) == OlciUI-Integrated  xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Olci.UI\Bin
于 2012-10-31T04:34:40.450 回答