【问题标题】:How to point to a different project.json location in a .NET Core PCL?如何指向 .NET Core PCL 中的不同 project.json 位置?
【发布时间】:2016-02-17 05:28:00
【问题描述】:

假设您有一个应该为多个平台编译的 .NET Core PCL。由于基于 csproj 的项目一次只支持编译一个平台,因此您不能共享 project.json。因此,您的目录结构如下所示:

LibFoo
|
---- LibFoo.csproj
|
---- Platforms
     |
     ---- net45
     |    |
     |    ---- project.json
     |
     ---- netcore451
          |
          ---- project.json

您还有两个 MSBuild 目标平台:Net45NetCore451。在为Net45 构建时,您希望将项目文件包含在Platforms/net45 中,而对于NetCore451(顺便说一下,这是Windows 8.1),您希望将项目文件包含在netcore451 中。

您将如何在 MSBuild 中实现这一点?这是我目前所拥有的:

<PropertyGroup>
  <ProjectJsonRoot>Platforms\$(Platform.ToLower())</ProjectJsonRoot>
  <ProjectJson>$(ProjectJsonRoot)\project.json</ProjectJson>
</PropertyGroup>

<!-- Now $(ProjectJson) is set to the project.json location,
     what do I do to 'register' it with the compiler? -->

TL;DR:如果 project.json 与您的 csproj 文件不在同一位置,您将如何将其设置为不同的位置?

感谢您的帮助。

【问题讨论】:

    标签: c# .net msbuild asp.net-core dnx


    【解决方案1】:

    如果您查看 AutoMapper repo,您会看到 Jimmy Bogard 如何构建代码,其中 csproj 文件针对“较旧”的项目类型。

    【讨论】:

    • 感谢您的回答!不幸的是,我认为这不能回答我的问题。您链接到的 repo 使用多个 csproj 文件来定位不同的平台。我的问题是问如何使用多个project.json 文件来实现这种效果。
    【解决方案2】:

    不幸的是,您似乎必须创建一个自定义 MSBuild 任务才能执行此操作:

    https://github.com/dotnet/corefx/issues/6169

    我最终只接受了@Nyegaard 的回答并编写了多个 csproj 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多