【问题标题】:Make IDE build output binaries to single folder, and resolve ref's from it使 IDE 构建输出二进制文件到单个文件夹,并从中解析 ref
【发布时间】:2010-12-04 21:34:32
【问题描述】:

我们的构建服务器使用以下属性已经有一段时间了

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

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

  1. 这是对构建的优化 本地和复制参考 本地
  2. 我需要我所有的 dll 无论如何,公共文件夹,所以我可以压缩 并发货

由于这在构建盒上运行良好,我想为我们的开发人员带来同样的体验。我希望我们的 IDE 构建以相同的方式运行。

换句话说,我希望我们的开发人员一直使用的工作流程(构建解决方案、构建项目)能够像我描述的那样在构建框上运行。

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

我想知道

  • 是否有其他人在这样做?
  • 最好的方法是什么?
  • 我需要编辑每个 csproj 文件还是使用外部工具或批处理文件

谢谢

【问题讨论】:

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


    【解决方案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 文件中,然后在每个项目中导入它。

    【讨论】:

      【解决方案2】:

      我们也在做同样的事情。编辑每个 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>
      

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

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

      【讨论】:

      • 您能举个例子说明您每次都在编辑什么吗?我可以使用 grepWin 对现有项目进行批量搜索和替换,然后制作新的项目模板吗?我有超过 500 个项目,所以我有很高的维护率。
      • 天啊... 500 个项目。那么这可能不是一个选择。搜索和替换工具需要过于复杂。
      猜你喜欢
      • 1970-01-01
      • 2020-05-21
      • 2021-12-14
      • 1970-01-01
      • 2021-09-16
      • 2011-02-24
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多