如何从MSBuild引用`dnu restore`生成的包?

时间:2016-02-17 21:33:58

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

编辑:对于有兴趣获得repro的人,该项目在GitHub上可用here。只需git clone个来源,进入目录并运行MSBuild,并且(假设你安装了DNU),你应该会遇到错误。

原帖

我正在努力建立一个现代PCL"基于.NET Core为我即将推出的库。我在从项目中引用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要点显示项目中MSBuild的输出。

正如您在日志中看到的那样,依赖项中的类型不会被编译器接收,而且我找不到一堆“未找到”类型的类型&#39;错误。我该如何解决这个问题?

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我只是使用通配符glob来包含所有程序集:

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

像魅力一样工作。