Visual studio 2010 强制VS2010使生成输出路径保持绝对

Visual studio 2010 强制VS2010使生成输出路径保持绝对,visual-studio-2010,build,teamcity,Visual Studio 2010,Build,Teamcity,我们希望让构建服务器将每个构建的输出发送到 C:\Projects\{project name}\build\{build configuration} 为了实现这一点,我将我的项目的buildoutput path属性设置为VisualStudio2010中的属性,并在本地进行构建以确保一切正常。当我这样做时,visual studio会将路径更改为相对路径,例如。\..\build\Debug 由于构建服务器上的项目目录不同(我们使用TeamCity,因此那里的项目url类似于C:\Buil

我们希望让构建服务器将每个构建的输出发送到
C:\Projects\{project name}\build\{build configuration}

为了实现这一点,我将我的项目的buildoutput path属性设置为VisualStudio2010中的属性,并在本地进行构建以确保一切正常。当我这样做时,visual studio会将路径更改为相对路径,例如
。\..\build\Debug

由于构建服务器上的项目目录不同(我们使用TeamCity,因此那里的项目url类似于C:\BuildAgent\work\9358A92GF92),因此输出不会在我们想要的地方结束


如何使Visual Studio不将生成输出路径更改为相对路径?您无法说服IDE将其设置为绝对路径。可能的解决办法:

  • 使用生成后事件复制生成输出
  • 如果输出目录位于另一个驱动器上,则不会使路径相对。您可以使用SUBST命令将类似z:的驱动器号映射到c:上的文件夹,并以此方式愚弄IDE
  • 直接在生成计算机上运行msbuild.exe。使用/p命令行选项将OutDir属性强制为另一个值
  • 解决方案3可能是最好的,因为您可以使它特定于构建机器,而无需修补项目文件,并使开发人员的生活变得困难。该命令应类似于以下内容:

     msbuild /p:outdir=c:\mumble\ projectOrSolutionFileName
    

    请注意,输出目录名必须以尾随的反斜杠结尾。您无法说服IDE使用绝对路径,但可以更改项目文件:

    <OutputPath>C:\Dir1\Dir2</OutputPath>
    
    C:\Dir1\Dir2
    
    IDE仍将显示相对路径,但它将存储绝对路径


    VisualStudio2010SP1对我很有用,在TeamCity中将命令行参数添加到构建配置中就成功了。谢谢