gpt4 book ai didi

visual-studio-2008 - 从 3.5 构建 MSBuild 2.0 项目

转载 作者:行者123 更新时间:2023-12-01 00:07:16 24 4
gpt4 key购买 nike

我有一个 VS 2005/MSBuild 2.0 项目(我们称之为“项目 A”),我必须将它保留在 VS 2005 中(它使用第三方 VS 2005 设计器。)项目 A 被我的新 VS 中的一个项目引用2008 解决方案(我们将分别称它们为“项目 C”和“解决方案 B”。)理想情况下,我想将项目 A 的构建链接到解决方案 B 的构建中,并且我相信“ToolsVersion”属性是 key 。所以,回顾一下,这就是我需要做的:

  • 通过命令行或 Visual C# 2008 Express 在解决方案 B 上开始构建。至关重要的是它通过 工作两者 !
  • 让项目 C 触发项目 A 的构建。
  • 将项目 A(类库)的输出复制到项目 C。
  • 构建项目 C 和解决方案 B 中的其余项目。

  • 这是一个图表:
    MSBuild 3.5 或 VS2008->
    [方案B(3.5)]->
    [项目 C (3.5)]->
    [项目A(2.0)]->
    将 A 的输出复制到 C->
    继续构建解决方案 B

    关于我应该如何设置的任何想法?来自工作项目文件的剪辑将不胜感激!提前致谢!

    解决方案
    以下是需要添加到项目 C 中的内容,以完成这项工作:
    <ItemGroup>
    <ProjectToBuild Include="..\ProjectA\ProjectA.csproj" />
    </ItemGroup>
    <Target Name="BeforeBuild">
    <MSBuild
    Projects="@(ProjectToBuild)"
    Targets="Rebuild" ToolsVersion="2.0">
    <Output
    TaskParameter="TargetOutputs"
    ItemName="AssembliesBuiltByChildProjects" />
    </MSBuild>
    <Copy SourceFiles="@(AssembliesBuiltByChildProjects)"
    DestinationFolder="$(MSBuildProjectDirectory)"
    />
    </Target>

    注意这里有一个 known issue使用 MSBuild 任务获取解决方案的 TargetOutputs。这应该在 MSBuild 3.5 中修复,但我猜是 ToolsVersion 属性导致它重新出现。这就是我直接引用 ProjectA.csproj 而不是其解决方案文件的原因。

    最佳答案

  • 确保项目 C 是项目 B 的依赖项。(在这种情况下,没有项目 B,但如果有,请确保。)
  • 在文本编辑器中编辑项目 C 的 proj 文件。在文件底部但在结束项目标记之前添加以下内容,其中 a.sln 是项目 A 的解决方案。

    <项目组>


    <目标名称="BeforeBuild">
    项目="@(ProjectsToBuild)"
    Targets="Build"ToolsVersion="2.0">
    <输出
    任务参数=“目标输出”
    ItemName="AssembliesBuiltByChildProjects"/>

    DestinationFolder="@(SolutionDir)\References"
    />
  • 在您的解决方案下创建一个引用文件夹,并确保将其标记为项目 C 的引用文件夹。
  • 构建项目 B。

  • 我还没有测试过,但这个概念应该有效。

    关于visual-studio-2008 - 从 3.5 构建 MSBuild 2.0 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782725/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com