MSBuild OutputPath属性和绝对路径

时间:2010-06-07 12:24:20

标签: msbuild

我正在尝试将OutputPath值设置为绝对路径:

<OutputPath>c:\Projects\xxx\Deployment</OutputPath>

但是我收到了这个错误:

Error   17  The expression "[System.IO.Path]::GetFullPath(D:\Projects\xxx\trunk\xxx.Web.Deployment\c:\Projects\xxx\Deployment\)" cannot be evaluated. The given path's format is not supported.     1   1   xxx.Web.Deployment

有没有办法在OutputPath属性中使用绝对路径?我尝试过试验BaseOutputPath属性:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deployment|AnyCPU'">
  <BaseOutputPath>C:\Projects\xxx\</BaseOutputPath>
  <OutputPath>.\Deployment</OutputPath>
  <EnableUpdateable>true</EnableUpdateable>
  <UseMerge>true</UseMerge>
  <SingleAssemblyName>xxx.Web.Deployment</SingleAssemblyName>

但它似乎被忽略了。什么是BaseOutputPath和BaseIntermediateOutputPath用于?

4 个答案:

答案 0 :(得分:5)

我不确定你是否可以做你正在谈论的事情,但你可以添加类似于以下内容:

<PropertyGroup>  
    <CentralisedBinariesFolderLocation>c:\wherever</CentralisedBinariesFolderLocation>
</PropertyGroup>  

<Target Name="AfterBuild">
    <Exec Command="xcopy /Y /S /F /R &quot;$(TargetPath)&quot; &quot;$(CentralisedBinariesFolderLocation)&quot;" />
</Target>

在构建之后,它会将其复制到相关位置。

答案 1 :(得分:3)

尝试使用OutDir代替OutputPath

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deployment|AnyCPU'">
  <OutDir>C:\Projects\xxx\$(Configuration)</OutDir>
  <EnableUpdateable>true</EnableUpdateable>
  <UseMerge>true</UseMerge>
  <SingleAssemblyName>xxx.Web.Deployment</SingleAssemblyName>
</PropertyGroup>

答案 2 :(得分:0)

  1. 从安装程序目录
  2. 复制.target和.dll文件
  3. 修改顶部看起来像&lt; UsingTask TaskName =“GetProjectProperties”AssemblyFile =“../../ ..lallal / VisualStudio / v10.0 / Microsoft.Web.Publishing.Tasks.dll”/的行&GT;并且c * 将那些.target和.dll文件添加到您正在编辑的复制的Microsoft.WebDeployment.targets文件旁边的供应商文件夹中 *。设置attr,AssemblyFile =“Microsoft.Web.Publishing.Tasks.dll”
  4. 将行&lt; EnablePackageProcessLoggingAndAssert Condition =“'$(EnablePackageProcessLoggingAndAssert)'==''”&gt; True&lt; / EnablePackageProcessLoggingAndAssert&gt; 添加到初始 PropertyGroup 。< / LI>
  5. 在实际文件/其他tagets / other build-proj文件中根据需要设置OutputPath。
  6. 编辑行~290到&lt; WebPublishPipelineProjectDirectory条件=“''$(WebPublishPipelineProjectDirectory)'==''”&gt; $(OutputPath)&lt; / WebPublishPipelineProjectDirectory&gt;

答案 3 :(得分:0)

不是仅仅使用与WebPublishPipelineProjectDirectory相同的路径定义OutputPath,而不是10月份答案中的所有步骤?

我在我的CI解决方案中尝试过(使用CruiseControl),它似乎有效。

有没有人知道这样做会产生哪些副作用?