2014-03-31 6 views
2

Nancy Asp.Net 웹 애플리케이션 템플릿을 사용하여 Visual Studio 2013을 사용하여 만든 매우 간단한 프로젝트가 있습니다.Linux 환경에서 xbuild로 .NET 프로젝트 빌드

내 개발 컴퓨터에서 Visual Studio 2013을 성공적으로 빌드하고 있습니다.

그러나 xbuild를 사용하여 Linux Mono 환경에서 동일한 소스를 빌드하려고하면 실패합니다. 내가 오류의 이유를 이해할 수 없었다

[email protected]:/home/hitly/hitly/src/Hitly.Service# xbuild 
XBuild Engine Version 12.0 
Mono, Version 3.2.8.0 
Copyright (C) 2005-2013 Various Mono authors 

Build started 3/31/2014 2:11:49 PM. 
__________________________________________________ 
Project "/home/hitly/hitly/src/Hitly.Service/Hitly.Service.csproj" (default target(s)): 
     Target RestorePackages: 
       Executing: mono --runtime=v4.0.30319 ../.nuget/NuGet.exe install "" -source "" -RequireConsent -solutionDir "../" 
       The specified path is not of a legal form (empty). /home/hitly/hitly/src/.nuget/NuGet.targets: error : Command 'mono --runtime=v4.0.30319 ../.nuget/NuGet.exe install "" -source "" -RequireConsent -solutionDir "../"' exited with code: 1. 
     Task "Exec" execution -- FAILED 
     Done building target "RestorePackages" in project "/home/hitly/hitly/src/Hitly.Service/Hitly.Service.csproj".-- FAILED 
Done building project 
"/home/hitly/hitly/src/Hitly.Service/Hitly.Service.csproj".-- FAILED 

Build FAILED. Errors: 

/home/hitly/hitly/src/Hitly.Service/Hitly.Service.csproj (default targets) -> /home/hitly/hitly/src/.nuget/NuGet.targets 
(RestorePackages target) -> 

     /home/hitly/hitly/src/.nuget/NuGet.targets: error : Command 'mono --runtime=v4.0.30319 ../.nuget/NuGet.exe install "" -source "" -RequireConsent -solutionDir "../"' exited with code: 1. 

     0 Warning(s) 
     1 Error(s) 

Time Elapsed 00:00:00.7254640 

: 여기

이 출력됩니다.

Linux에서 어떻게 이러한 소스를 만들 수 있습니까?

답변

5

고정!

는 단순히 .nuget/NuGet.targetsPackagesConfig 요소를 추가 :

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'"> 
    <!-- We need to launch nuget.exe with the mono command if we're not on windows --> 
    <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath> 
    ++++<PackagesConfig>packages.config</PackagesConfig> 
</PropertyGroup> 
+0

내가 ~'내부에는'NuGet.targets' 파일이 없습니다/.nuget' 폴더에만'NuGet.exe' .. –

+0

기본 설정으로 파일을 만드는 것은 어떨까요? –

2

NuGet.targets는 NuGet 패키지의 키 파일 복원이지만, 그 버전이 아니라 NuGet들에 의해 관리되지 않습니다.

당신이 만난 문제는 사용하는 버전이 Mono friendly가 아니라는 것을 나타냅니다. 귀하의 편집이 효과가있을 수 있지만 NuGet Git 저장소에 최신 정보 (예 : http://nuget.codeplex.com/SourceControl/latest#src/Build/NuGet.targets)를 주시 할 것을 권합니다.

희망 NuGet 친구들은 비슷한 문제를 장기적으로 예방할 수 있기 때문에 Mono에 대한 추가 테스트를 수행 할 수 있습니다.

(NuGet 최신 콘솔이 최근에 모노를 실행할 수 있습니다.이 대답에 대해 잊지하시기 바랍니다 및 복원 메커니즘이 파일을 대상으로 없애 변경됩니다.)

+1

Linux에서 Nuget을 실행할 필요가 있습니다. GitHub의 NuGet Git 저장소 페이지의 설명서에 Linux에서 빌드하는 방법이 설명되어 있지 않습니다. 누락 된 것이 있습니까? 감사. –

+1

@ W.M. 이제 Mono에서 NuGet.exe를 사용하면이 대답은 더 이상 유효하지 않습니다. –