【问题标题】:Trouble compiling using a MyGet package in .NET Core project在 .NET Core 项目中使用 MyGet 包编译时遇到问题
【发布时间】:2017-03-14 00:00:53
【问题描述】:

我创建了几个 MyGet 包,并将它们推送到我的提要中。我已经成功地在我的项目中引用了这些包。我可以看到 NuGet 包管理器中列出的包,并且可以看到它们下载到 Users[用户名].nuget\packages 中。事实上,当我删除了 packages 文件夹中的那些文件夹并在我的解决方案中恢复包时,我看到这些文件夹又被下载了。当然,我的 project.json 文件中也列出了这些引用。

到目前为止,一切看起来都很好。

然后我尝试从其中一个包中引用一个类,而 Visual Studio 根本找不到它。它只是给了我标准的“类型或命名空间......不存在”错误。另外,我尝试在对象资源管理器中拉出包以查看是否可以查看类,但它无法在任何地方找到列出的包,而它可以看到所有其他已拉下的 Nuget 包。

我什至去我的 MyGet 提要下载了一个包,并确保列出了所有的类和接口,而且,果然,它们都在那里。

所以回顾一下 - 我的项目参考看起来不错。包的内部看起来不错。 VS 正在将包下载到 Users[user].nuget\packages。但是,我完全无法在我的代码中使用这些包。

我不知道这是否有区别,但这是 VS 2015,我使用的是 .NET Core。

我该如何解决这个问题?

Solution Explorer showing that the 3 packages can't be expanded for more details.

【问题讨论】:

  • 你是如何创建这些包的? dotnet pack 在另一个 project.json 或 nuspec + csproj 上?
  • 我添加了一个 nuspec。这是一个 xproj,因为它是 .NET 核心。
  • hmm.. 如果您也为 nuget 包使用 .net 核心工具,则不需要 nuspec,只需要 project.json,然后执行 dotnet pack -c Release,它应该放一个 .nupkg在您的 bin 文件夹中的某个位置。多目标包的正确包布局有点复杂,所以dotnet pack 是你最好的 .net core 朋友..
  • project.jsonpackOptions 部分允许您指定在使用 csproj 时必须添加到 nuspec 的所有其他属性。
  • @MilanMalkani 如果您在解决方案资源管理器中展开引用,您的库会显示吗?

标签: visual-studio-2015 nuget .net-core myget


【解决方案1】:

请在 project.json 文件中添加以下脚本代码打包 .NET Core 包。

"scripts": {
"postcompile": [
  "dotnet pack --no-build --configuration %compile:Configuration%"
  ]
}

编译您的 .NET Core 项目后,它会在 \bin\debug 文件中生成 .nupck 文件。然后请将此包上传到您的 NuGet 源并将其安装到您的项目中。

如果我用你使用 nuspec 文件的步骤打包 .NET Core 包,我会遇到同样的问题。 .NET Core 项目与普通项目不同,普通项目是带有 project.json 的管理器包。所以请用 project.josn 文件打包你的 .NET Core 包。

【讨论】:

  • 感谢您的帮助!这使我走上了正确的道路并解决了问题。但是,我确实采用了稍微不同的方法将包放入 MyGet。我接受了 Wendy 的建议,并将该行添加到配置中。完成后,我仍然使用 MyGet Build Services 直接从 GitHub 拉取代码并构建和部署我的包,而不是手动上传包。再次感谢您帮我解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2015-10-10
  • 1970-01-01
相关资源
最近更新 更多