从.NET Core XUnit项目中引用标准dll

3
我正在使用最新版本的XUnit,按照这些步骤进行操作,以启动Class Library (.NET Core)项目。
我整个解决方案中的所有其他库都只使用4.6.1,因此我更改了project.json中的框架部分如下:
{
    "frameworks": {
        "net461": {
            "dependencies": {
                "Microsoft.NETCore.Platforms": "1.0.1-rc2-24027"
            }
        }
    }
}

我的解决方案内一切正常。我可以运行测试,所有对其他库的引用也能正常工作,尽管它们只有461个。基本上,在我的解决方案中,我有几个其他类库(.NET Core),我的XUnit库依赖于它们,所以我可以通过Visual Studio直接引用它们,并将引用添加到XUnit项目的project.json文件中。

出现了这样的情况:

只复制XUnit项目到另一台开发人员的电脑上。让他编辑源代码以创建测试,但不给予他访问所有其他库/代码的权限。我想我可以将所有其他dll复制到一个随机文件夹中,并能够从独立的XUnit项目中引用它们。然而,这并不是这种情况,因为在尝试引用时,我会收到一个错误,指出.NET Core项目无法引用标准dll。

有谁能给我一个想法,我该怎么做呢?

1个回答

7
你应该将你的库打包成 Nuget 包。
.NET Core 只能通过 Nuget 来处理依赖关系。即使你使用 VS UI("Add reference" 命令)添加引用,后台也会将引用作为 Nuget 包添加:如果你打开 project.json 文件,你会发现你的库在 "dependencies" 部分中使用与其他库相同的 "package:version" 格式进行指定。
要将你的代码打包成 Nuget 包,请使用 dotnet pack 命令。
如果你不使用任何公共 Nuget 源,可以 Hosting Your Own Nuget Feed

谢谢,最终我创建了自己的自定义源,并使用nuget.exe将所有dll打包成一个包,然后进行了引用! - Blake Rivell
直接从磁盘引用程序集应该在.NET Core 2.0发布时可用。https://github.com/dotnet/sdk/issues/120 - Jaanus Varus
@JaanusVarus:看起来似乎不可能。选项是存在的,针对所引用程序集中的类型进行编译可以工作,但在运行时,引用的程序集未找到,因为它未添加到TRUSTED_PLATFORM_ASSEMBLIES中。这是一个很大的烦恼。 - Wout
dotnet pack 链接已损坏。 - rory.ap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接