0

有没有办法告诉 Visual Studio 构建不属于其解决方案的项目?我们一直在研究许多不同的选项,但没有成功,例如嵌套项目、共享项目和构建事件。

示例架构:

Project A
Project B
    ref Project i
    ref Project ii
Project C
--------------
Solution 1
    Project A
    Project B
    Project C
Solution 2
    Project i
    Project ii

现在,我无法构建解决方案 1,因为项目 B 不会构建,因为项目 i 和 ii 尚未构建。我必须切换到解决方案 2,构建它,然后返回解决方案 1,然后构建工作。这听起来不是最好的做事方式,但我不是决定的人,我正在寻找一种在不将项目 i 和 ii 添加到解决方案本身的情况下简化流程的方法,即使添加了一些构建事件或什么不是解决方案将被允许。我怎样才能做到这一点?

4

1 回答 1

0

我们提出的解决方案是在 C# 项目中添加一个预构建目标,这些项目在解决方案之外具有项目依赖项。即,项目 B 现在包含如下内容:

<ItemGroup>
    <ProjectDependency Include="..\Solution2\Project-i.csproj"/>
    <ProjectDependency Include="..\Solution2\Project-ii.csproj"/>
</ItemGroup>
<PropertyGroup>
    <BuildDependsOn>
        BuildProjectBDependencies;
        $(BuildDependsOn)
    </BuildDependsOn>
</PropertyGroup>
<Target Name="BuildProjectBDependencies">
    <MSBuild Projects="@(ProjectDependency)"
             Properties="OutDir=$(OutputPath);
                         Configuration=$(Configuration)"
             Targets="Build" />
</Target>

尝试构建项目 B 首先需要构建项目 i 和项目 ii,无论是在 Visual Studio 中还是使用自动构建过程。

于 2021-01-06T01:14:59.233 回答