2016-07-22 121 views
6

我已经创建了许多共享项目,并且正在测试这些是否可以在所有不同的项目类型之间共享,正如我所希望的那样。到目前为止,我已经完成了所有这些工作(有时采用了一些解决方法),但是我还无法弄清楚如何使用.NET Core Class Library来实现,这非常有用。如何在.NET核心类库中引用Visual Studio共享项目

由于我似乎无法通过Visual Studio 2015做到这一点,有没有人知道一种方法来做到这一点?也许通过直接在类库的project.json文件中输入引用?

编辑:从Visual Studio 2017 RC开始,共享项目正确地与.NET Core项目一起工作。

回答

5

从Visual Studio 2017 RC开始,共享项目也可以在.NET Core平台上正常工作。

+0

我想这取决于“正确”的定义。 我有共享项目,其中包含一个单元测试,以及两个测试项目,一个.NETCoreApp1.0和一个.NET Framework 4.6.2,它们都引用共享项目。 共享测试仅在.NET Framework中可见。 .NETCoreApp1.1也是如此。 –

+1

我总是将我的共享项目捆绑在一个dll中,例如.NET Core 1.1类库或.NET Framework类库。然后我将该dll引用到我的测试项目中。考虑到测试本身往往依赖于特定版本的库,我还没有尝试在两个库之间实际分享测试。无论如何,希望您使用内置报告工具向Microsoft报告您的发现 - 他们刚才解决了我之前报告的最新版本中的一个问题,您无法使用Visual Studio删除共享项目参考(必须执行此操作所以在项目文件中) – Arwin

3

看来这是不可能的 - 我一直在试图找出如何做到今天!我发现最好的是来自这太问题:

How can I use xproj (asp.net/dotnet core project) with shproj (shared project)?

什么我是从它带走的是,我可以创建可直接由NET45引用/ 46类库,但共享项目必须使用基于project.json-解决方法被拉入.NET的核心项目,通过添加下面的“buildOptions” -

"buildOptions": { 
    "compile": { 
    "include": [ 
     "../../TesterShared/**/*.cs" 
    ] 
    } 
} 

在上面的例子中,我的共享项目被称为“TesterShared”和Visual Studio已经在解决方案的根源中创建了它 - 与.NET Core项目不同在“src”文件夹中创建(因此双“../”父路径导航)。

+0

如果这样的话,这是我可以暂时与之共存的东西!然后希望下一个Visual Studio更新能够解决这个问题。 – Arwin

+1

我也希望如此!由于project.json显然已被替换为另一种.csproj文件,因此他们可能会这样做。我一直在使用这种方法,所以我知道它工作正常,但有一些限制..我想在共享项目中包含一个“.sqlite”数据库文件,并遇到了问题(有“copyToOutput”选项,几乎可以达到我想要的,但不完全)。另外,如果您在共享项目中编辑文件,则需要强制重建.NET Core项目 - 它不会意识到对共享项目的更改需要重建。 –

+0

啊,这些确实是一些令人讨厌的限制。所以基本上Visual Studio并不真的知道共享项目是链接的,但至少会编译它。 至于SQLLite的东西,我认为那些大多是客户特定的。我努力在我的共享项目中拥有零依赖关系,并让他们定义可以在构造函数中注入的所有外部接口。 我会接受你的答案,再次感谢。 – Arwin

相关问题