我们以两种不同的方式使用 NuGet(NuGet 版本:3.5.0.1996)。我们可以从命令行运行它,也可以使用 Visual Studio (2015) 中的 NuGet 包管理器。
问题是这两种方式添加对不同格式的.csproj文件的引用。如果我们使用命令行,我们会得到一个如下所示的引用:
<Reference Include="Dummy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Dummy.1.27.10\lib\net452\Dummy.dll</HintPath>
<Private>True</Private>
</Reference>
如果我们在 Visual Studio 中使用 NuGet 包管理器,我们会得到一个如下所示的引用:
<Reference Include="Dummy, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dummy.1.27.10\lib\net452\Dummy.dll</HintPath>
<Private>True</Private>
</Reference>
请注意,一个添加了带有 PublicKeyToken 属性的引用,另一个添加了带有 processorArchitecture 属性的引用。
这会导致我们的源代码管理出现问题,导致频繁(且不必要)的更新和合并。
很高兴知道为什么会发生这种情况,但我更希望有一种方法可以防止这种情况发生。有什么建议吗?
最佳答案
从 Visual Studio 2015 开始,Nuget 是嵌入式的,您无法更改所使用的版本。我手边没有要检查的 VS 2015,但很可能它使用的版本与您在命令行中使用的版本不同。
Nuget“遭受”(或享受)了很多变化,我认为这只是两个不同版本的 nuget 如何处理包引用的体现。
为了避免源代码管理出现问题,我的建议是标准化一种使用 Nuget 的方法并坚持使用。我的建议是通过包管理器控制台(类似于 CLI)或通过可视化界面在 Visual Studio 中使用它。
关于c# - 为什么 C# 引用在 NuGet 和 Visual Studio 之间添加不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45088790/