草庐IT

c# - 添加对 dll 的引用与在 .NET Standard 项目中添加 NuGet 包

coder 2024-05-21 原文

我的解决方案中有一个 .NET Standard 2.0 项目,我正在使用 IConfiguration 接口(interface)。当我写名字时,VS 提示我引用 Microsoft.Extensions.Configuration.Abstractions.dll。如果我这样做,它会添加到引用节点下。不过,我也可以将其添加为 NuGet 包。这两种方式似乎都有效。我假设引用 VS 建议是通过项目中引用的 .NET Standard SDK 添加的。

添加该引用的推荐方法是什么?每种方法的优点和缺点是什么?

最佳答案

直接从手动下载或安装在已知位置的 NuGet 包引用 DLL 可以加快恢复和构建过程,但存在一些危险。

当被引用时,NuGet 包可以执行许多 DLL 文件不能执行的操作。如果您想从包中引用 DLL,请确保该包不会执行以下操作之一/考虑以下可能性:

  • 可以将其他 NuGet 包作为依赖项引入。如果从较新的包升级 DLL,则需要检查依赖项是否已更改并相应地更新项目。
  • NuGet 包可以提供不同的引用和实现程序集 - 例如NuGet 包可能会在其 ref/ 文件夹中提供一个“API 表面”dll,然后在其 lib/ 中包含针对 .NET Framework、.NET Core、Xamarin 等的不同实现程序集>。文件夹。您必须小心选择正确的 DLL 文件以引用项目类型 - .NET Standard 库可能需要引用引用程序集(例如 ref/netstandard1.4/foo.dll编译时间和使用此库的 .NET Framework 应用程序需要引用来自例如 lib/net452/foo.dll 的程序集。
  • NuGet 包可能包含添加到构建输出的额外运行时特定内容和/或目标框架特定内容。这可以是 native 库(Windows 上的 .dll,Linux 上的 .so 等 - 来自 runtime/ 子文件夹)或任何内容文件。在没有 NuGet 的情况下做到这一点很棘手,因为 .nuspec 文件还可以定义内容文件的构建操作。
  • 构建逻辑可以包含在 NuGet 包中,这些包在构建期间设置某些属性或执行目标,这是正确使用产品所必需的。如果不以正确的方式编辑 .csproj 文件,这是不可能手动完成的。

如果 NuGet 包不使用上述任何内容(您需要手动检查),通常可以安全地引用 DLL。但是,更新 DLL 及其依赖项需要大量工作,而且使用 NuGet 更容易做到。

此外,您提到您直接从 .NET Core 工具的 nuget 回退文件夹引用。此文件夹不保证在其他安装中包含特定版本的 DLL(取决于安装的 SDK 版本),甚至可能安装在不同机器上的不同位置,使您的项目文件无法供其他人使用(以及就像在非 Windows 机器上构建一样)。

关于c# - 添加对 dll 的引用与在 .NET Standard 项目中添加 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318899/

有关c# - 添加对 dll 的引用与在 .NET Standard 项目中添加 NuGet 包的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  4. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  5. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  6. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  7. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  8. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  9. ruby - 一个 YAML 对象可以引用另一个吗? - 2

    我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的ruby​​yaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir

  10. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

随机推荐