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