Visual studio 在项目可用的属性中获取TFS生成的输出目录
我在生成后事件中有以下命令: 如果$(ConfigurationName)=发布“$(SolutionDir)Tools\NuGet.exe”pack“$(ProjectDir)MyProject.Contracts.nuspec” 当我在VisualStudio中编译时,它工作得很好。但是当我的构建运行这个时,它失败了。这是因为某个地方有人认为,让TFS上的构建与开发人员机器上的构建运行不同是个好主意 在这种情况下,所有输出文件都被分组到一个公共“二进制文件”文件夹中 所以,我的问题是: 我是否可以使用一个属性(而不是ProjectDir)来引用生成的输出位置? 这意味着在运行TFS构建时,它将指向binaries文件夹,在执行基于Visual Studio的正常构建时,它将指向我的正常输出 我尝试了$(OutDir),但它等同于“bin\Release\”Visual studio 在项目可用的属性中获取TFS生成的输出目录,visual-studio,tfs,msbuild,tfsbuild,Visual Studio,Tfs,Msbuild,Tfsbuild,我在生成后事件中有以下命令: 如果$(ConfigurationName)=发布“$(SolutionDir)Tools\NuGet.exe”pack“$(ProjectDir)MyProject.Contracts.nuspec” 当我在VisualStudio中编译时,它工作得很好。但是当我的构建运行这个时,它失败了。这是因为某个地方有人认为,让TFS上的构建与开发人员机器上的构建运行不同是个好主意 在这种情况下,所有输出文件都被分组到一个公共“二进制文件”文件夹中 所以,我的问题是: 我是
更新:我尝试使用$(OutDir),但Visual Studio使用它提供的部分路径失败。是否有一些东西可以与$(OutDir)一起使用,为VisualStudio和TFS构建提供完整路径 如有必要:
- TFS版本为TFS 2010(已安装最新版本)
- 构建计算机和开发计算机都运行Windows 7和VS 2010 Ulitmate
$(OutDir)
应解析为本地版本的bin\debug
或bin\release
等,在生成服务器上,这将解析为二进制文件
文件夹
所以是的,
$(OutDir)
应该是正确的使用方法。但是我需要完整的路径。Visual Studio在生成后事件中使用部分路径使我的命令失败。嗯,因此$(OutDir)
可以在TFS上工作,但不能在本地工作?我可能会检查$(DevEnvDir)
或其他东西,如果它没有安装,应该为空,那么您可以使用$(ProjectDir)
,否则使用$(OutDir)
。有点黑,如果你在构建服务器上安装了VS,它可能也不会工作,因为它还会尝试解析$(ProjectDir)
。我找到if$(TeamBuildConstants)==\u TEAM\u build\u
来检查我是否在团队构建中。(顺便说一句,这让我发现问题实际上在我的nuspec文件中。)