.net - 如何在 Visual Studio 的生成后事件中获取解决方案目录的动态路径

标签 .net visual-studio post-build-event

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

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

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

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

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

我怎样才能使 xcopy/Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Ibe.UI\Bin(粗体部分是动态的,这样谁做过 checkin 用户无需进行更改即可轻松构建应用程序。

最佳答案

这是所有不同的列表 Post-Build event macros .

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

另一种选择 如果您使用的是 MSBuild,则可以添加 User Defined Macros VS 中的变量,创建你自己的 property sheet如示例所示:

<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 窗口上工作。

关于.net - 如何在 Visual Studio 的生成后事件中获取解决方案目录的动态路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030139/

相关文章:

.net-框架和.net常规

c# - 编译特定版本的 DotNetOpenAuth 并进行小改动,签名问题

.net - 单元测试无法访问另一个项目中的设置

visual-studio-2010 - 构建后 SET 命令和 %variable% 错误

c# - 按需加载缓存

.net - 构造新类型时如何将动态参数传递给 Structuremap?

java - VS 2017无法打开包含文件 'jni.h'

visual-studio - 类库(遗留可移植)?

c# - 根据文本长度调整文本框和表单大小

visual-studio-2013 - 如何在没有硬编码路径的 Visual Studio 2013 后构建事件中使用 signtool?