2017-11-17 15 views
0

나는 우분투 VM 인 publishes과 CakeBuild가 포함 된 ASP.Net 핵심 응용 프로그램 2.0을 가지고 있습니다.우분투에서 asp.net 핵심 응용 프로그램을 실행할 때 예외가 발생합니다.

출력은 .Net Core SDK가 이미 설치된 다른 Ubuntu VM으로 이동됩니다. 내가 dotnet 메인 DLL 파일을하려고하면

는 다음과 같은 예외가 발생합니다 :

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
Aborted (core dumped) 

이 내가 게시 된이 개 nuget 패키지를 사용하고있는 응용 프로그램에서 내 build.cake

Task("Clean") 
.Does(() => 
{ 
    CleanDirectory(binaryDir); 
    CleanDirectory(objectDir); 
    CleanDirectory(publishDir); 
}); 

Task("Restore") 
.IsDependentOn("Clean") 
.Does(() => 
{ 
    DotNetCoreRestore(solutionPath); 
}); 

Task("Build") 
.IsDependentOn("Restore") 
.Does(() => { 
    var settings = new DotNetCorePublishSettings 
    { 
     Configuration = configuration, // Release 
     OutputDirectory = publishDir, 
     Runtime = runtime // linux-x64 
    }; 

    DotNetCorePublish(solutionPath, settings); 
}); 

입니다 Windows 컴퓨터 (.Net Standard 2.0)에서이 문제가 발생하면 dotnet이 실패합니까? 그렇다면 Linux와 호환되는 nuget 패키지를 사용하는 방법은 무엇입니까?

온도 솔루션

지금은 트릭을하고있다 네이티브 후에 .NET CLI publish 명령을 사용하여 응용 프로그램을 구축하고 들어

; 하지만 지금은 케잌 빌드가 문제가 해결 될 때까지 여기서 내 경우에는 쓸모가 없다는 것을 의미합니다. 추가 조사와

+0

그것은 바보 같은 질문처럼 들리 겠지만, 실행 시간의 버전이 일치합니까? 두 VM에서'dotnet --version'을 실행하면 같은 출력을 얻게됩니까? –

+0

둘 다 동시에 설치되었으므로 최신 버전 인'2.0.2 '입니다. – Ayman

+0

허. 정말 이상합니다. –

답변

0

, 나는 전체 이름으로 output 또는 runtime 매개 변수를 제공하는 것이 문제 (bug #8298)을 일으키는 것을 발견, 그래서 나는 그것이 케이크의 문제를 생각하지 않습니다, 오히려 그들은 이름의 인수와 함께 DotNetCorePublish 명령을 호출 .

cake/src/Cake.Common/Tools/DotNetCore/Publish/DotNetCorePublisher.cs lines 63-75

// Output directory 
if (settings.OutputDirectory != null) 
{ 
    builder.Append("--output"); 
    builder.AppendQuoted(settings.OutputDirectory.MakeAbsolute(_environment).FullPath); 
} 

// Runtime 
if (!string.IsNullOrEmpty(settings.Runtime)) 
{ 
    builder.Append("--runtime"); 
    builder.Append(settings.Runtime); 
}