visual-studio - 如何确保 nuget 程序集是按包添加的,而不仅仅是对 DLL 文件的引用?

标签 visual-studio msbuild nuget nuget-package

我多次注意到开发人员倾向于通过浏览 .dll 来直接引用程序集。 .\packages下的文件文件夹(由另一个项目安装)并将其添加到项目引用中,而不是在该项目上安装 nuget 包。在这种情况下,即使它编译,但 Nuget 包管理器不知道引用的程序集来自包,因此在解决方案范围内更新包不会更新该项目中的那些引用。如果您正在执行面向服务的架构,其中应用程序中的每个功能都是解决方案中的一个单独项目,那么您可能有数百个项目,管理这些引用将成为一场噩梦。如果程序集属于 nuget 包,有没有办法阻止开发人员直接引用程序集?例如,是否有任何 MSBuild 任务来验证对包程序集的所有引用都需要将包安装在项目上?

最佳答案

如果你的团队使用 resharper,他们有一个插件来帮助解决这个问题:

http://blog.jetbrains.com/dotnet/2012/11/20/add-packages-not-references-a-nuget-plugin-for-resharper/

我猜这个问题是由没有它的人使用 resharper 引起的,因为默认情况下 VS 不知道包含该 DLL 但 Resharper 会找到它并引用它(并且不会在没有插件的情况下更新包配置)

还要习惯让人们在解决方案级别而不是项目级别使用 nuget。这将迫使人们更新整个解决方案中的所有 nuget 包,而不会让您在项目 A 上使用 V 1.1.1.0,在项目 B 上使用 v 1.1.2.0。

关于visual-studio - 如何确保 nuget 程序集是按包添加的,而不仅仅是对 DLL 文件的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414817/

相关文章:

c++ - 在 VS 2008 中调用 _osfile() 的 CRT 断言错误?

mysql - 连接 MySQL 与 Visual Studio C#

c# - 使用 "Treat warnings as errors"时忽略生成的文件

c# - 我们如何使用 Cake build 对安全的 NuGet 服务器进行身份验证?

c# - VS2010 Test Professional/Team Server 的替代品?

c# - 如何在 C# 项目的预构建和构建后事件中获取最新的 windows sdk 版本路径?

MSBuild - 使用不同参数多次调用目标

asp.net-web-api - NuGet Microsoft.AspNet.WebAPI 5.2.3 是 WebAPI 2.2 吗?

nuget - 是否有可与 ASP.Net 5 一起使用的 Lightspeed 5.x NuGet 包?

.net - 在 Visual Studio 2005 中调试存储过程时的即时窗口