我正在TeamCity上設置ASP.NET Core項目。它構建的二進制文件在其他機器上啓動時崩潰。該錯誤消息表明它正在尋找只存在於構建服務器上的路徑中的dll。 DotPeek顯示在.exe中有一個名爲myproject.deps.json
的嵌入式資源文件。在那裏的目標部分,有對使用絕對路徑的dll的引用。這意味着ASP.NET Core二進制文件只能在它們所在的機器上運行。什麼是deps.json,以及如何使它使用相對路徑?
我該如何解決這個問題?這個文件是什麼,我如何使用相對路徑?經過一番挖掘,看起來路徑來自project.fragment.lock.json
,這是一個生成的文件。如果我編輯它以使用相對路徑,則該文件將被重新覆蓋。什麼會產生這種情況,以及如何修復或停止?
對於那些誰問,project.json
樣子:
{
"dependencies": {
"CommandLineParser": "1.9.71",
"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.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",
"System.Configuration.Abstractions": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net461": {
"dependencies": {
"Company.Common": {
"target": "project"
},
"Company.Integration": {
"target": "project"
},
"Company.Functions": {
"target": "project"
},
"Company.Utils": {
"target": "project"
}
}
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
那些絕對路徑引用是第三方庫? – Evk
@Evk他們中的一些人,其他人是參考室內圖書館。 – TarkaDaal
TeamCity是安裝在您的機器上還是在單獨的服務器上? dotnet版本是最新的? deps.json的哪一部分包含圖書館的路徑 - 你能比較一下本地 - 構建一個並向我們展示一些差異嗎? – Dmitry