使IDE构建输出二进制文件到单个文件夹,并从中解析ref

时间:2009-10-08 07:12:43

标签: visual-studio-2008 msbuild build-process

我们的构建服务器已经使用了以下属性

OutputPath=c:\output;
OutputDir=c:\output;
OutDir=c:\output;
ReferencePath=c:\output;
AdditionalLibPaths=c:\output

这使得所有输出都转到公共文件夹,并且还允许解析该文件夹的引用。这很有效,因为

  1. 这是对建筑的优化 本地和复制引用 本地
  2. 我需要我所有的dll 常见的文件夹,所以我可以拉链 和船
  3. 由于这在构建盒上运行良好,我想为我们的开发人员带来相同的体验。我希望我们的IDE构建行为方式相同。

    换句话说,我希望我们的开发人员总是使用(构建解决方案,构建项目)的工作流程,就像我在构建框中描述的那样。

    如果我要求团队为批处理文件创建一个VS.Net外部工具,只需在所选项目上调用具有所需属性的msbuild,我就可以轻松完成此操作。但理想情况下,他们不必改变他们的工作流程。

    我想知道

    • 如果有人这样做的话?
    • 最好的办法是什么?
    • 我是否需要编辑每个csproj文件或使用外部工具或批处理文件

    由于

2 个答案:

答案 0 :(得分:1)

您需要设置OutDir和ReferencePath,以便项目发送它们 输出到OutDir并让他们解析来自同一路径的引用。你可以 添加一个公共目标文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
     <PropertyGroup>
           <OutDir>c:\output\</OutDir>
           <ReferencePath>$(OutDir);$(ReferencePath)</ReferencePath>
     </PropertyGroup>
</Project>

将它放在foo.targets文件中,然后将其导入到每个项目中。

答案 1 :(得分:0)

我们也在做同样的事情。编辑每个csproj文件。相当多的管道,但它的工作原理。

如果可能 - 尝试将组件数量减少到最小。

Csproj所需的编辑:

  <ProjectReference Include="..\Core\Core.csproj">
      <Project>{9C81B684-40CC-472A-804D-7C0F963315F5}</Project>
      <Name>Core</Name>
    </ProjectReference>

应该成为常规参考:

<Reference Include="Core, Version=1.0.0.0, Culture=neutral,  
     processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\Deploy\$(Configuration)\Core.dll</HintPath>
    </Reference>

虽然 - 部署文件夹的相对路径应该定义为属性。

但我不是建筑大师。只是分享一些信息。 :)