【问题标题】:Reference hell accessing .netstandard with framework VS2019 preview参考地狱访问 .netstandard 框架 VS2019 预览
【发布时间】:2020-05-28 16:45:11
【问题描述】:

如果我执行以下步骤,我可以让我的 .net 标准 2.0 包在 .net 框架 4.7.2 dll 中工作

在我的标准项目VS2019 61.4.4中右键项目并选择pack创建.nupkg 然后我为包设置了一个nuget包源 在我的框架项目中,我安装了 nuget 包 我得到以下对话框

我在项目文件中选择PackageReference

我回答是接受许可

然后我可以看到以下内容

我可以让我的项目正常运行。

但是在另一台运行 VS2019 16.5.0 Preview 2.0 的机器上,我没有收到要求我选择包管理器格式的对话框。

引用看起来像

我无法让我的项目工作。

[更新]

按照 Lance 的链接将 packages.config 迁移到 PackageReference 该项目看起来像

我可以通过右键单击引用并选择 Remove Unused References

来删除不需要的包

程序成功了!

【问题讨论】:

  • 如对话框所说,一切都由“NuGet 设置”控制。

标签: visual-studio nuget .net-standard


【解决方案1】:

Go Tools=>Nuget Package Manager =>General => Package Management 你可以通过Allow format selection on first package install 控制行为。勾选复选框并重新启动VS,此更改将生效。

请注意,该对话框仅在我们在当前项目中安装 第一个包 时出现。因此,如果您创建一个新项目并安装包,它将出现。而且由于您曾经在该项目中安装了软件包,因此该对话框将不再出现在 WindowsFormApp2 中。

(但您可以轻松地将 packages.config 迁移到 PackageReference,请参阅 this)。

【讨论】:

  • 其实我是在工具->选项->Nuget包管理器->常规找到的
  • 有趣的是,该应用程序仅适用于包引用而不是包配置。
  • 我猜这可能与packages.config和PackageReference之间的不兼容有关。由于.net standard 是PackageReference,并且使用它的项目使用packages.config。您可以尝试将 `PackageReference` 添加到您的 .net 框架项目并运行重建以检查它是否有任何不同。而且 PackageReference 是我认为的未来,所以我推荐使用 PackageReference。
  • 我认为您可以通过检查 bin/debug 输出文件夹来定位问题的原因。如果你有两个项目 A(packages.config) 和 B(PackageReference),都使用你的包并使用一些代码来调用方法。构建整个解决方案,检查两个输出文件夹,然后你可以找到不同之处。(有运行时错误的项目应该比另一个项目少)
猜你喜欢
  • 2018-01-08
  • 2018-08-09
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多