在 dotnetcore classlib 中引用共享项目,并在 windows 和 linux 上进行构建

Reference shared project in dotnetcore classlib, and have the build work on windows and linux

我的目标是从 dotnetcore class 库引用共享项目。

为了做到这一点,我在 windows 上的 visual studio 2017 中使用 .NET 命令行工具 (1.0.4) 打开了我在 linux 上制作的解决方案,因为我阅读了 vs2017支持对 shprojs 的引用。所以我使用 vs 添加了一个引用,并将这一行添加到 .netcore 库 csproj 文件中:

<Import Project="..\Objects\LogoRecognitionShared.projitems" Label="Shared" />

在这一点上,我认为一切都会完美地进行。我在视觉工作室中构建它,那里没有问题。我认为由于我的 cli 版本在 windows 和 linux 上是相同的,所以该项目将以相同的方式构建并支持相同的功能。

然而,当我在 linux 上尝试这些更改时,我收到了一堆“error CS0246: The type or namespace name 'TypeName' could not be found (are you missing a using directive or an assembly reference?)”消息。

我也使用 <Compile Include="..\Objects\*.cs"/> 语句并得到同样的错误。但是,如果我同时使用两者,那么我会得到 warning CS2002: Source file 'Objects/*.cs' specified multiple times

我不确定如何解决这个问题。在我看来,构建过程知道应该将这些文件构建到输出中,但是当构建实际发生时,它会将它们排除在外并破坏引用。

任何帮助都会很棒。

好吧,我想找出是什么导致了我的问题。我的一个共享项目的 RootNamespace 值不正确。所以我从 vs2017 修正了它,然后做了一个干净的构建,令我惊讶的是它在 linux...

上工作