.net core classlibrary调用.net框架类库

时间:2016-06-03 07:06:18

标签: c# asp.net-core-mvc .net-core

找不到我怀疑的答案,希望有人可以澄清。

我用

创建了一个虚拟解决方案
  • 1个类库(.net框架)
  • 1 .net核心库

尝试引用任何一种方式,但我不能,它们不兼容,很好有道理。

现在我的问题

我有一个实用类库(.net框架),包含扩展,帮助等... winforms-wpf-asp.net mvc 4,5应用程序现在使用的.net核心事件它在我看来我不能再使用这个库,除非我将它移植到.net核心,然后我不能使用我的其他应用程序。

什么是正确的方法?

我错过了明显的吗?

2 个答案:

答案 0 :(得分:2)

通过简单地使用共享项目,在普通.NET库和Core项目之间共享代码对我来说不起作用,因为我无法从Core项目中引用它。

然而,通过一个小技巧,我可以使它发挥作用。

让我用这个文件夹/文件结构解释:

[ProjectName] // Root of Core project
    project.json
    [ProjectName].xproj

    Shared // Root of Shared project
        [ProjectName].Shared.projitems
        [ProjectName].Shared.shproj 
        // -- Source files here --

    Net // Root of .NET project
        [ProjectName].csproj
        Properties
            AssemblyInfo.cs // For both Core and .NET project
        // NO source files here

因此,您当然需要3个项目:Core项目,普通.NET项目和Shared项目 共享项目包含所有源文件 .NET项目引用了共享项目,因此它也有这些文件 Core项目可以看到Shared项目拥有的所有文件,因此它也有相同的文件。

那就是它。您现在可以拥有.NET和Core项目的公共源代码文件。

一些注意事项:

  • 请勿将.shroj.csproj放入同一文件夹中。对我来说,它完全关闭了VS(2015)中的intellisense。这些信息给我带来了很多痛苦......
  • 您可以使用#if -s来微调公共代码
  • 您也可以在.NET项目中使用具有上述文件夹结构的NuGet 2
    • 请注意,如果您将(NuGet 2)packages.config放入(NuGet 3)project.json所在的同一文件夹中,后者将完全覆盖之前的文件。 / LI>

答案 1 :(得分:0)

您可以尝试使用共享库项目。它可以说是针对引用应用程序/库的平台进行编译的。这使您能够创建针对不同平台的类库,而无需复制任何代码,但可能需要一些#if ...

https://blogs.msdn.microsoft.com/dotnet/2014/04/21/sharing-code-across-platforms/