如何在一个文件夹中构建所有项目?

时间:2013-12-06 09:00:24

标签: c# solution

有没有办法将解决方案构建到单个文件夹中?我在这个解决方案中有几个项目,每个项目都访问一个应该在当前目录中的配置文件。我只是将每个项目的构建文件移动到一个,它仍然可以工作,但是,它看起来如此无组织和混乱。我只是想知道还有其他方法可以做到这一点。

4 个答案:

答案 0 :(得分:9)

您可以在解决方案中的每个项目的设置中设置输出目录(如果我们是关于Visual Studio)。菜单:项目 - >属性 - >构建 - >输出路径。例如,我使用..\Build\将项目构建到解决方案根目录的Build目录中。

答案 1 :(得分:5)

这篇MSDN文章解释了如何以一种漂亮,干燥的方式做到这一点: https://blogs.msdn.microsoft.com/kirillosenkov/2015/04/04/using-a-common-intermediate-and-output-directory-for-your-solution/

它允许您只指定一次这些目录,并在多个项目中使用这些设置。

步骤:

  1. 在解决方案中创建一个 common.props 文件,该文件将指定并覆盖项目的输出和中间路径到公共目录(例如"解决方案/ bin&#34 )。 这是我在文章中找到的示例* .props文件:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
            <SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
            <Configuration Condition="$(Configuration) == ''">Debug</Configuration>
            <OutputPath>$(SolutionDir)\bin\$(Configuration)\</OutputPath>
            <OutDir>$(OutputPath)</OutDir>
            <OutDir>$(OutputPath)</OutDir>
            <IntermediateOutputPath>
                $(SolutionDir)\obj\$(Configuration)\$(MSBuildProjectName)\
            </IntermediateOutputPath>
            <UseCommonOutputDirectory>False</UseCommonOutputDirectory>
            <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
        </PropertyGroup>
    </Project>
    
  2. 将此文件包含在要为其设置公共输出目录的每个 * .csproj 中,方法是添加此行(实际路径可能不同):<Import Project="..\Common.props" /> < / p>

答案 2 :(得分:4)

您可以更改项目“输出路径”,默认情况下它是给定项目的bin目录。

右键单击每个项目,从上下文菜单中选择Properties,然后选择Build选项卡。 在Output部分的底部更改Output path:。为每个项目设置相同的路径。

我同意你提出的意见,你不应该改变它。相反,您可以创建后期构建操作(PS脚本),将所有文件从项目的bin目录复制到您指定的目录。

<强>更新

将此脚本设置为Post Build命令(Project的属性 - &gt; Build Events选项卡 - &gt; Post build event命令行):

xcopy "$(TargetDir)*" "$(SolutionDir)Build" /s /i /Y

答案 3 :(得分:1)

对于每个项目:

  1. 进入项目属性,在&#34; Build&#34;标签。
  2. 选择&#34;所有配置&#34;,&#34;所有平台&#34;,只是在案例中。
  3. 在输出文件夹中写&#34; .. \ bin \&#34; (或任何统一的路径 - 不在当前项目目录中)。或者,要在子文件夹中组织DLL,您可以编写&#34; .. \ bin \ Sub-project-directory&#34;在输出路径中。然后,您应该为EXE项目添加一个App.config文件,并探测所有DLL,以便在运行时找到并加载它们。