【问题标题】:Why are PackageReference's references not working for msbuild and shared projects?为什么 PackageReference 的引用不适用于 msbuild 和共享项目?
【发布时间】:2020-01-05 12:56:17
【问题描述】:

从 packages.config 迁移到 PackageReferences(.NET4.5 项目)后,构建(msbuild)被破坏。

错误 CS0246:找不到类型或命名空间名称“anynugetpackage”(您是否缺少 using 指令或程序集引用?)

使用 VisualStudio 进行构建可以完美运行。 所以我做了一些研究,发现包的恢复也适用于 msbuild。

该问题仅存在于未正确应用 PackageReference 引用的共享项目 (.shproj)。

一种解决方法是向 PackageReference 的库添加一个修复引用,但这样我就失去了 PackageReference 与 packages.config 相比的所有优势

您可以查看项目和不同的解决方案(分支):

packages.config
PackageReference
PackageReferenceWorkaround

有关构建和错误日志,请参阅 github 操作。

有没有更好的处理方法?

【问题讨论】:

  • 我不知道 shproj(共享项目)作为一个概念存在。这些可以用于任何类型的项目吗?我来到这里是因为我遇到了一个问题,即我想在另一个项目中的一个项目中重用一些 DAL 逻辑,而不需要创建 API 让两者进行对话。
  • 据我了解,共享项目只是源文件的集合,可以包含在多个其他项目中。在这些其他项目中,编译特定配置发生,例如编译定义,框架设置。但是,如果您向共享项目添加一个额外的源文件,它会通过共享项目自动包含到您的所有正常项目中,这是我认为的主要好处。

标签: msbuild nuget shared-project packagereference


【解决方案1】:

ProjectReference 添加到.projitems 确实有效。

.shproj 不是由 .csproj 导入的。仔细检查.csproj 以查看实际导入的文件。


我建议对可以添加到解决方案的包引用使用单独的项目文件。 Visual Studio 做得不好,如果在外部编辑,它会询问您是否要覆盖文件,并且不允许我将 .projitems 添加为解决方案项。

【讨论】:

  • 我已决定停止使用共享项目,因此无法再复制此内容,但感谢您的努力。
猜你喜欢
  • 2016-09-05
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多