2017-03-06 140 views
4

當建立一個MVC項目在Ubuntu中出現下列錯誤:DOTNET核心 - 缺少csproj.metaproj

/home/user1/.local/share/Trash/files/pangolin.2/Pangolin.Web/src/Pangolin.Web/Pangolin.Web.csproj.metaproj : error MSB4025: The project file could not be loaded. Could not find file '/home/user1/.local/share/Trash/files/pangolin.2/Pangolin.Web/src/Pangolin.Web/Pangolin.Web.csproj.metaproj'. 
0 Warning(s) 
1 Error(s) 

在構建Windows上的同一個項目有沒有編譯錯誤。

兩臺機器上的dotnet版本都是1.0.0-rc4-004771。該項目是在兩種環境中使用dotnet build命令構建的。

+0

你有'global.json'嗎? –

+0

不,沒有global.json是解決方案的一部分,但VS2017在遷移dotnet 1.1期間沒有備份global.json文件,然後刪除它。 – Levon

+0

@Levon你解決了嗎? – Polynomial

回答

4

問題出在目錄結構上。確保將任何外部項目添加到src目錄。或者,您可以將外部項目添加爲NuGet依賴項。

3

我遇到了一個非常類似的問題:它在我的DevMachine(Windows10)上成功構建,但在CI(Ubuntu 14.04)中失敗。

我的目錄結構:

.gitignore 
package/ 
    deployment_package.zip 

src/ 
    .vs/ 
    MyService/ 
     MyService.csproj 

    MyService.Tests/ 
     MyService.Tests.csproj 

    MyService.sln 

的時候我會在.sln文件夾級別運行dotnet build它會失敗,但成功我創建的每個.csproj的。

我的工作Rake任務:

task :dotnet_build do 
    Dir["#{SRC_DIR}/**/*.csproj"].each do |csproj_path| 
    raise "Error building: #{csproj_path}" unless system("dotnet build #{csproj_path} --framework netcoreapp1.1") 
    end 
end 

編輯: dotnet build有多個內核構建的問題。 設置/m:1標誌修復了此問題。

+0

我和Travis一樣。如果你也是,那麼你會介意分享你'.travis.yml'文件嗎? – nopara73

+0

@ nopara73,我沒有使用Travis,並且已經從這個解決方案中遷移出來。我發現編譯時有一個並行錯誤。我現在可以定位'.sln'文件,並添加標誌'/ maxcpucount:1'來消除這些並行化錯誤。 –

0

問題出在目錄結構上。確保將任何外部項目添加到src目錄。或者,您可以將外部項目添加爲NuGet依賴項。

解決我的問題。 我說每一個項目的SRC文件夾: ./src/project1 ./src/project2

,我有一個global.json: ./global.json

{ "projects": [ "src"], 
    "sdk": { 
    "version": "1.0.4" 
    } 
}