如何在Pre-Build事件中使用$(OutDir)?

时间:2013-03-28 11:39:09

标签: visual-studio-2012 msbuild tfs2010 tfsbuild

$(OutDir) = \bin\Release (in local with VS2012)

$(OutDir) = C:\\...\BuildDefinition\Binaries (on TFS2010 Team Build)

如何在Pre-build事件中编写一个在两种情况下有效的XCOPY?

在我的project2中,我引用了project1。所以我需要这样做:

在当地:

XCOPY /Y $(SolutionDir)Project1\$(OutDir)Project1.dll"

"$(SolutionDir)MyProject2\Objects\Assemblies"

团队建设

XCOPY /Y "$(OutDir)Project1.dll" "$(SolutionDir)Project2\Objects\Assemblies"

谢谢。

2 个答案:

答案 0 :(得分:6)

这是一个有用的构建事件检查:

if "$(BuildingInsideVisualStudio)" == "" 

这将允许您在Visual Studio中定义构建事件,而不是在TeamBuild(msbuild)上运行时

答案 1 :(得分:2)

作为最佳实践,您不应在预构建目标中从TFS构建或Visual Studio调用XCOPY以获取所需的DLL引用。

在项目2中创建项目引用到项目1.这将确保正确编译和引用最新代码。

TFS会自动为您移动dll。 Visual Studio将自动知道如何找到它,如果您将引用设置为本地复制,则会将两个dll移动到输出文件夹。

如果你有第三方dll,你没有编译,那么最佳做法是创建一个名为lib \或dependencies \的文件夹,并从该位置引用dll。

希望这有帮助。