2016-08-08 113 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項目中的問題? –

相關問題