【问题标题】:Mixing packageReference and packages.config in one Solution?在一个解决方案中混合 packageReference 和 packages.config?
【发布时间】:2020-02-04 12:40:37
【问题描述】:

我们有一个包含旧版 ASP.NET 应用程序和许多其他项目的大型解决方案(主要是 .NET 4.7)。将整个解决方案移至 .NET 核心是不可行的。尽管如此,我们不再想管理传递依赖,避免使用problems with out-of-band packages,等等。

Visual Studio 2019 有一个迁移助手,可以帮助我们将我们的 csproj 文件从 packages.config 迁移到该格式。不幸的是助理does not support ASP.NET projects;主要问题似乎是web.config

我的直觉告诉我,将一些项目移动到 packageReference 可能是个坏主意,而 ASP.NET 应用程序坚持使用 packages.config。但是,对于在一个解决方案中混合使用 packageReference 和 packages.config 是否还有基于事实的理由?

【问题讨论】:

    标签: asp.net .net nuget csproj


    【解决方案1】:

    在遇到problems after updating a transitive dependency of the RabbitMQ.Client NuGet package 之后,我们发现我们不再希望主动管理传递依赖项。至少对于这个项目来说,不幸的是,它是我在问题中提到的真正大型 ASP.NET 解决方案的一部分。所以我们继续将一个项目迁移到 packageReference,将所有其他项目保留在 packages.config 中。稍后,我们迁移了所有的单元和集成测试项目,以及一些其他项目。现在我们采用“混合解决方案”两个月左右。我们没有遇到任何问题,并且我们以该状态经历了发布生命周期。

    【讨论】:

    • 我刚刚在我们的解决方案中添加了一个使用 PackageReference 的 netstandard 库,而其他一切都使用 packages.config - 由于某种原因,一个引用没有复制到输出。您是否更改了自上而下以正常工作?因为自下而上似乎对我们有问题。
    • 我们将项目自下而上更改为 packageReference。也就是说,我们首先迁移了一些不引用任何其他项目的项目。在每个项目中,我们始终对所有引用的 NuGet 包使用 packageReference 或 packages.config。为了解决您的问题,也许您想在您引用的库的 github 项目或 NuGet 项目本身中打开一个问题 - 如果您认为这是 nuget 或特定 nuget 包中的错误。 HTH
    • @Squirrelkiller 我猜在使用 nuget.config 时,您引用的包的“Reference”元素在 csproj 文件中有子元素 true - 或者没有这样的子元素完全没有,默认为true。在解决方案资源管理器中,这显示为“复制本地”:true。如果这是您的用例,并且您想模仿旧行为,那么这个答案可能会有所帮助:stackoverflow.com/a/55105073/2792414
    猜你喜欢
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多