2016-06-21 60 views
1

我試圖將這些模型分成自己的項目,以便在使用新的.net核心類庫的xamarin跨平臺應用程序中使用。我被呈現的問題是:ASP.NET Core RC2爲跨平臺項目分開模型

Error image

我的解決方案結構如下:

Solution structure image

我的類庫project.json如下:

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.5.0-rc2-24027", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final" 
    }, 

    "frameworks": { 
    "net451": { }, 
    "netstandard1.5": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net452+win81" 
     ] 
    }, 
    ".netcoreapp1.0": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    } 
} 

我正在引用Web應用程序中的類庫,但我不確定是否將模型pro perly或不。我試着找到一個解決方案,但是因爲ASP.NET Core框架還很新,所以沒有太多關於如何將模型分解到它自己的項目中的文檔或指導。我希望有人能提供一些關於如何實現這一目標的指導。

編輯

這裏是我的web應用程序project.json:

{ 
    "userSecretsId": "aspnet-Climbing.Web-d856be17-9b54-401e-98b2-4d6589fc7ff3", 

    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0-rc2-3002702", 
     "type": "platform" 
    }, 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview1-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview1-final", 
     "type": "build" 
    }, 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc2-final", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview1-final", 
     "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
     "version": "1.0.0-preview1-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Identity": "1.0.0-rc2-final", 
    "Climbing.Domain": "1.0.0" 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": [ 
     "portable-net45+win8+dnxcore50", 
     "portable-net45+win8" 
     ] 
    }, 
    "Microsoft.Extensions.SecretManager.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": [ 
     "portable-net45+win8+dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     }, 
     "imports": [ 
     "dotnet5.6", 
     "dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "gcServer": true 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

enter image description here

提前任何幫助感謝。

+0

可能與問題無關,但爲什麼你在地圖庫中有'.netcoreapp1.0'?此目標框架名詞對象(TFM)僅供應用程序使用,不應在類庫中使用 – Tseng

+0

它修復了Resharper智能感知錯誤http://stackoverflow.com/a/37617711/3603938 –

+0

而且如果您希望跨平臺平臺刪除引用到.NET Framework 4.5.1 在您的project.json中,刪除行「net451」:{}, –

回答

0

我發現解決方案很奇怪,這是一個不應該成爲問題的命名空間問題。我確信底層ASP.NET核心RC2框架中存在一個錯誤,儘管我可能是錯的?

當我將類庫中的ApplicationUser的名稱空間從'Climbing.Web.Models'更改爲'Climbing.Domain'時,會出現問題 - 這將是正確的名稱空間。一旦我將其更改回'Climbing.Web.Models'命名空間,問題就解決了。

編輯: 深入了一會兒,發現我沒有更新ApplicationUser被引用的視圖中的命名空間。通過更新導入來解決此問題。

+0

視圖在運行時編譯,以便可以解釋它。他們刪除了rc1或rc2中的視圖預編譯,直到他們找到一個新的位置放入它 – Tseng

0

解決方案中的單個項目不總是有你需要的所有參考,你可以像這樣手動添加它們。

  • 右鍵單擊項目標題。
  • 轉到添加 - >附圖 Screen cap
  • 圍棋大會(也許基於COM的依賴),然後選擇所需的依賴Screen Cap
+0

我不太明白你的答案。我不認爲我錯過了任何依賴? –

+0

您可能正在使用「使用」關鍵字,這並不意味着VS會像您期望的那樣導入它,特別是在解決方案中創建新項目時。至少根據我的經驗,不到一個月前我遇到了一個類似的問題,正是在這個過程中解決了這個問題。 –

+0

似乎的解決方案是將ApplicationUser的名稱空間從類庫更改回原來的名稱空間 - 奇數。 –

0

這聽起來好像你沒有從你的web項目正確的參考到類項目(或者,你缺少一個using聲明

要從Web項目中引用一類項目,更新您的Web項目的project.json和依賴類似以下內容:

"dependencies": { 
    "Climing.Domain": { 
     "version": "1.0.0-*", 
     "target": "project" 
    }, 
} 
+0

不幸的是你的答案沒有奏效。我已經將Web應用程序'project.json'包含在我對模型項目的引用中。我絕對不會錯過任何「使用」語句,因爲編譯器很高興並且項目會建立並運行。 –

+0

啊,剛纔看到你的回答下面有關視圖中不正確的命名空間,是有道理的! – Sock