【问题标题】:How to reference packages generated by `dnu restore` from MSBuild?如何从 MSBuild 引用由 `dnu restore` 生成的包?
【发布时间】:2016-02-17 21:33:57
【问题描述】:

编辑:对于那些有兴趣获得复制的人,该项目可在 GitHub 上here 获得。只需git clone 源,cd 进入目录并运行 MSBuild,并且(假设您已安装 DNU)您应该会遇到错误。

原帖

我正在尝试为即将推出的库构建基于 .NET Core 的“现代 PCL”。我无法从我的项目中引用dnu restore 生成的包。这是我的csproj 文件的相关部分:

<!-- Before building, use dnu to restore packages -->
<Target Name="BeforeBuild">
  <PropertyGroup>
    <ProjectJson>some\dir\project.json</ProjectJson>
    <DnuRestore>dnu restore</DnuRestore>
    <PackagesDirectory>packages</PackagesDirectory>
  </PropertyGroup>
  <Exec Command="$(DnuRestore) $(ProjectJson) --packages $(PackagesDirectory)" />
</Target>

当我通过msbuild 从命令行构建项目时,包还原似乎可以工作,但是当我构建项目时,它们实际上并没有被引用。例如,here's GitHub gist 显示项目中 MSBuild 的输出。

从日志中可以看出,编译器没有获取依赖项中的类型,并且我收到了一堆“找不到类型”的错误。我该如何解决这个问题?

供参考,here's我的project.json

{
    "dependencies": {
        "Shims.Xaml": "1.8.0"
    },

    "frameworks": {
        "net45": { }
    }
}

TL;DR: 我从 MSBuild 运行 dnu restore --packages blah。编译库时如何引用下载的 NuGet 包?

任何帮助将不胜感激。谢谢!

【问题讨论】:

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


    【解决方案1】:

    我通过简单地使用通配符 glob 来包含所有程序集来做到这一点:

    <ItemGroup>
        <Reference Include="packages\**\*.dll" />
    </ItemGroup>
    

    工作就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多