2013-07-20 3 views
0

Visual Studio 2012에서 주로 개발 된 솔루션이 있습니다. 주요 비 호환성없이 MonoDevelop로 개발하고 싶습니다.MonoDevelop를 사용한 nuget 패키지 복원

지금까지 MonoDevelop에 mrward의 nuget addin을 설치했으며 해당 인터페이스를 통해 packages.config에 각 패키지를 수동으로 추가하면 모든 것이 작동합니다. 그러나 이것은 매우 번거 롭습니다. 이 addin은이 글을 쓰고있는 현재 자동 패키지 복원을 지원하지 않습니다.

CodePlex에서 nuget.exe ("NuGet 명령 줄 유틸리티"라는 레이블이 붙어 있음)를 다운로드했습니다. 나는 간단한 찾기를 사용/필요한 모든 패키지를 설치하기 위해 조합을 xargs 명령 :

find . -name packages.config | xargs -I '{}' mono nuget.exe install '{}' 

이 예상대로/대신 패키지에서 물건을 넣는 실행되는 디렉토리에 수십 디렉토리를 생성하고 그것은 또한하지 않습니다 프로젝트 파일을 터치하면 MonoDevelop는 MonoDevelop가 시작된 디렉토리에서 패키지 참조를 찾아야한다고 여전히 생각합니다.

그러므로 모든 패키지 폴더가 들어있는 작업 디렉토리에서 MonoDevelop를 열었습니다. 여전히 잘못된 참조가 나타납니다. 나는 이것이 아마도 프로젝트가 package_name/reference를 찾고 있기 때문일 것이라고 생각하지만 폴더는 작업 디렉토리에있는 package_name.version /이라는 이름이다.

이 솔루션과 상호 작용할 수있는 간단하고 간단한 방법에 대한 제안이 있으십니까? 다음으로 쉘 명령을 수정하여 프로젝트/패키지로 자동 삭제하고 해당 디렉토리에서 nuget을 실행하려고합니다.

+0

대답이 도움이 되었습니까? 그렇지 않다면, 당신은 당신 자신의 솔루션을 제공 할 수 있습니까? –

답변

3

-o command line parameter with NuGet.exe을 사용해 보셨습니까? 이를 사용하여 특정 패키지 폴더에 설치할 패키지를 가져올 수 있습니다.

MonoDevelop 용 NuGet addin은 version 0.6 이상의 패키지 복원을 지원합니다. 프로젝트를 마우스 오른쪽 단추로 클릭하고 패키지 복원을 선택하십시오. 그러면 솔루션의 모든 프로젝트에 대해 packages.config에 정의 된 모든 패키지가 다운로드됩니다. 이를 위해 NuGet.exe를 사용합니다.

이 작업을 수행하는 또 다른 방법은 사용자 정의 NuGet MSBuild 대상을 사용하여 xbuild를 사용할 때 패키지 복원이 빌드시 발생합니다. 하지만 프로젝트 파일을 수동으로 편집해야합니다. 커버 아래에있는 커스텀 MSBuild 타겟은 NuGet.exe와 비슷한 커맨드 라인을 사용하여 이미 지정된 출력 디렉토리 옵션만을 가지고 있습니다. 그러면 작업이 적어지기 때문에 커맨드 라인 방식을 시도 할 것입니다.

당신은 코드 플렉스에 NuGet 저장소에서 다음 파일을 얻을 것이다 :

  • NuGet.exe
  • NuGet.targets
  • NuGet.config

는 이러한 넣어 디렉토리 어딘가. 일반적으로 이러한 파일은 솔루션 파일과 동일한 디렉토리의 .nuget 디렉토리에 저장됩니다. 그런 다음 프로젝트 파일을 편집하여 NuGet.targets 파일을 포함하고 SolutionDir 속성을 정의해야합니다. 따라서 다음과 같이하십시오 :

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir> 

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" /> 

또한 컴퓨터에서 패키지 복원을 활성화해야합니다. 옵션 대화 상자의 MonoDevelop에 대한 NuGet 추가 기능을 사용하여이 작업을 수행 할 수 있습니다. Linux에서는 기본 설정 아래의 편집 메뉴에서 사용할 수 있습니다. 그런 다음 NuGet - 일반 옵션을 살펴보면 패키지 복원을 가능하게하는 체크 박스가 있습니다.

Jonathan Channon이 만든 패키지 복원을 사용하고 MonoDevelop 내에 xbuild로 빌드 할 때 작동하는 example project on GitHub이 있습니다. 도움이 될만한 GitHub about using NuGet restore on Linux에도 문제가 있습니다.

업데이트 : 2014-05-14 : MonoDevelop 용 NuGet addin이 이제 패키지 복원을 지원합니다.

관련 문제