【发布时间】:2018-10-28 03:56:57
【问题描述】:
我正在开发一个通用库。我们称之为 My.Common。
My.Common 版本 1 已上传到我的 Intranet Nuget 服务器,并在其他几个库中使用,例如 My.Logging 和 My.Navigation。
在处理通过 Nuget 使用 My.Common、My.Logging 和 My.Navigation 的 .Net Core 应用程序时,我发现了 My.Common 中的一个错误。所以我需要修复版本 2 的 My.Common。该错误会影响应用程序直接使用的功能 - 它对其他库没有影响,它们可以继续使用版本 1。
我打开 My.Common 的代码,尝试修复并编译。在应用程序中,我删除了 My.Common 的 Nuget 包,并在其 bin 文件夹中添加了对 My.Common DLL 的引用。
此时我发现我的应用程序中没有看到对 My.Common 的更改。在 My.Common 的属性窗口中,路径显示为:
C:\Users\foo\.nuget\packages\my.common\1.0.0\lib\netcoreapp2.0\My.Common.dll
这是引用在 .csproj 中的外观:
<ItemGroup>
<Reference Include="My.Common">
<HintPath>C:\Projects\My.Common\bin\Debug\netcoreapp2.0\My.Common.dll</HintPath>
</Reference>
</ItemGroup>
尽管我已将它添加为程序集引用,但它仍被其 Nuget 包覆盖并提供服务!
由于程序集和 Nuget 包有不同的版本,我想我可以通过更明确地了解版本来解决这个问题。
<ItemGroup>
<Reference Include="My.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>C:\Projects\My.Common\bin\Debug\netcoreapp2.0\My.Common.dll</HintPath>
<SpecificVersion>true</SpecificVersion>
</Reference>
</ItemGroup>
设置为 true 时,Visual Studio 似乎根本无法找到程序集 - 属性中的路径为空白,应用程序填充“(您是否缺少程序集引用?)”错误。
我需要获取 My.Logging 和 My.Navigation 的本地副本,用程序集引用替换他们的 My.Common Nuget 包,编译,然后用程序集引用替换原始应用程序中的所有 Nuget 包,这似乎很极端.
如何让 Visual Studio 真正使用本地程序集引用?
【问题讨论】:
-
我将创建库版本 2 的预发布包(类似于
2.0.0-beta001)并使用它,而不是尝试使用程序集引用。如果它只是一个错误修复,并且没有重大更改,只需更新版本的第三个数字 (1.0.1-beta001) -
我试过了,但是开发起来很不方便。每一个细微的变化都需要更改版本号并将更新的包安装到应用程序中,并且您不能像在本地程序集中那样单步执行代码。
标签: visual-studio visual-studio-2017 .net-core nuget .net-assembly