我想写一下C#代码convert-nunit-3-nunit-2-results-xml-file,但是尽管增加了nuget包,但我错过了我的项目中的dll。我在包缓存的工具目录中看到它,但在我的项目中遗漏了它。我有什么看法?
我的项目目前是.Net Core 2.1。因此我的问题与此有关:Add support for net standard?我是.net的新手,到目前为止还不了解所有的差异。
正如zivkan解释的那样,包是一种工具。实际上,它是另一个工具NUnit引擎包的扩展。 NUnit引擎知道如何查找和使用扩展。
NUnit不会发布一个打算供代码用作库的包,因为除了它用作NUnit的扩展之外,我们还必须支持它作为库。
但是,NUnit的MIT许可证允许您使用源代码,您可以在https://github.com/nunit/nunit-v2-result-writer找到
由于代码尚未移植到.NET Core,因此您必须自己执行此操作。
你没有忽视任何事情。并非所有NuGet包都是库。
NuGet有关于如何打包文件以便使用各种功能的约定。例如,content
或contentFiles
中的文件会被复制到项目目录或构建输出中,具体取决于使用该程序包的项目是使用packages.config
还是PackageReference
。如果包作者想要给你一个可以在代码中使用的库,他们必须将库放在nupkg的lib
目录中(技术上它可能在ref
中,但那些不会被复制到构建/发布输出,它们仅在构建时使用)。毫无疑问,tools
目录适用于工具包。它经常被单元测试运行器使用,或者在本例中是报告生成器。
因此,由于程序包将dll放在tools
目录中,这意味着程序包作者希望程序包成为在开发过程中帮助您的工具,而不是作为您在代码中使用的库。您可以尝试联系包作者,看看他们是否已经发布了具有相同dll的另一个包,这次是在lib
目录中,以便您可以将它用于您的项目。
否则,您需要找到一个不依赖于NuGet的解决方案,将此dll作为库引入。一种选择是使用packages.config
文件在解决方案packages
目录中提取包,然后使用dll引用dll。然后,您的构建脚本需要在构建项目之前首先恢复packages.config
文件。另一个选择是将dll检入源控件管理工具,如果dll的许可证允许,并再次有一个dll引用它。