2016-08-08 78 views
6

我正在使用VS Update 3(14.0.25425.01)。下面是我做了什么:从.NET核心应用引用.NET 4.6.2类库

  1. 创建ASP.Net核心的Web应用程序(.NET核心)
  2. 创建类库的.Net 4.6.2
  3. 添加net462到框架,netcoreapp1.0,在项目进口。 JSON
  4. 右键单击ASP.Net核心应用,单击添加引用,选择项目,选择类库在步骤2中

创建我得到恢复没有错误和参照被添加到ASP。净C矿石应用。但是,我无法访问它。我无法添加使用导入声明或访问对象。我已经跑过很多东西,但似乎没有任何工作,并且帖子是非常分散的版本。

enter image description here

这里是在Program.cs在ASP.Net核心应用。 enter image description here

enter image description here

更新 我做了什么,内特建议。我以为我已经尝试过了......但是我确信现在可以访问我的4.6.2库。但是,我现在正在收到编译错误。

enter image description here

回答

4

这样确实可以在Visual Studio 2015年更新3,但是你project.json是不完全正确。

而不是增加net462imports部分的,它应该是在frameworks部分:

"frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
    "dependencies": { 
     "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
     } 
    } 
    } 
} 

注意,Microsoft.NETCore.App依赖性也需要移动到netcoreapp1.0部分。这是因为只有编译为.NET Core应用程序时才需要此依赖项。

参考您的.NET 4.6.2库是那么简单的dependencies节的一部分:

"dependencies": { 
    (...) 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
    "target": "project" 
    } 
} 

通过这种方式构建它,我能在我的.NET 4.6引用和使用类。 2库没有任何问题。


仅供参考,这里的整个工作project.json我用:

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
     "target": "project" 
    } 
    }, 
    "frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     } 
    } 
    }, 
    "version": "1.0.0-*" 
} 
+0

这实际上是为'netcoreapp1.0'还是仅为'net461'编译的? – svick

+0

@svick使用Visual Studio和'dotnet build',为'net461'和'netcoreapp1.0'生成二进制文件。 –

+0

如何?一个'netcoreapp1.0'应用程序不应该依赖于'net461'库,这是不兼容的。 – svick

1

@NateBarbettini答案完成了我原来的问题。但我无法运行ASP.Net核心Web应用程序版本1和我的.Net 4.6.1项目,因为它无法为我的.Net 4.6.1项目找到.NetCore.App v1程序集。所以我用下面的project.json将一个project.json添加到了我的.Net 4.6.1项目中。

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
    "imports": "dnxcore50" 
    }, 
    "net461": {} 
} 
} 

接下来,在ASP中。Net Core Web Application通过在.NetCore.App下添加依赖项来修改project.json。这样它会选择两个版本,4.6.1和.NetCore v1。

... 
"frameworks": { 
"net461": { 
    "dependencies": { 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
}, 
"netcoreapp1.0": { 
    "imports": [ 
    "dotnet5.6", 
    "portable-net45+win8", 
    "net461" 
    ], 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
} 
} 

到目前为止,我可以在.Net 4.6.1中开发,它将在.NetCore.App v1下运行。但是,我认为在.NET 4.6.1项目中有其他依赖关系时会出现问题。

+0

其他依赖项会导致您的.NET 4.6.1项目中的问题? –

相关问题