NuGet.exe를 소스 제어에 추가 할 필요 방지
일부 컨텍스트 : 패키지 를 커밋하지 않고 NuGet을 사용
하는 방법에 대한 자습서를 따랐 습니다. 주위에 작업 한 후 이 NuGet 문제 를 수동으로 추가 <RestorePackages>
하고 <Import ...>
nuget.targets 파일 것들에 대한 작업했다.
그러나 Mercurial로 저장소를 복제하면 빌드 할 때 다음과 같은 오류가 발생합니다.
'C : \ ... \ Visual Studio 2010 \ Projects \ MyProject \ .nuget \ nuget.exe'를 찾을 수 없습니다.
이것은 내 무시 패턴으로 인해 exe 파일을 체크인하지 못하기 때문에 의미가 있습니다. 에서 이 관련 SO 질문 I (또는 그 것이다?)이 버전 제어에서이 파일을 가지고 드문 일이 아니에요 것으로 추정하지만, 정말 나는 것 버전 제어에 NuGet.exe를 저지하지 않으려는 내가 그것을 도울 수 있다면.
질문 : NuGet.exe를 체크인하지 않아도되는 편리한 방법이 있습니까?
나는 Google-fu를 시도하고 문서를 훑어보고 NuGet.targets 파일을 조작했지만 지금까지 운이 없습니다. 솔루션을 구축하는 특정 환경의 NuGet.exe를 동적으로 가리킬 수 있다면 바람직해 보입니다.
exe 파일을 추가 할 수 있다는 것을 알고 있지만이를 처리 할 다른 방법이 있는지 또는 실행 가능한 대안이 없는지 알고 싶습니다.
업데이트 :
nuget.targets 파일에는 몇 가지 관련 xml이 있습니다.
<!-- only (relevant) parts of the xml shown below -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
...
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</task>
</UsingTask>
.targets 파일의 작동에 익숙하지 않지만 이것은 내가 찾고있는 라인을 따르는 것 같습니다. 나는 내 카우보이 코딩 모자는 변화 시도로 false
에 true
DownloadNuGetExe 요소에 있지만 (또는 조건 속성없이) 예상대로이 작동하지 않았다.
방금 확인 : nuget.targets는 msbuild 파일입니다. 그리고 당신은 올바른 길을 가고있었습니다.
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
값을 true로 변경하십시오.
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
그러나 적용하려면 Visual Studio 를 다시 시작하거나 솔루션을 다시로드해야합니다 (주석 참조) .
해당 .targets
파일을 보면 체크인 NuGet.exe
하거나 매번 다운로드 하지 않으려는 경우이 작업을 수행하는 또 다른 방법이 있습니다 . 핵심은 다음과 같습니다.
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
속성이 아직 정의되지 않은 경우에만 속성을 설정하는 MSBuild 규칙에 따라이 값은 기본적으로 솔루션의 로컬 복사본으로 NuGet.exe
설정되며 DownloadNuGetExe
속성이 true
. 그러나 MSBuild 속성은 환경 변수로 재정의 할 수 있습니다.
NuGet을 이미 중앙 위치에 다운로드 한 경우 DownloadNuGetExe
에서 그대로두고 대신 사용되는 false
라는 환경 변수를 정의 NUGETEXEPATH
할 수 있습니다.
솔루션을 마우스 오른쪽 버튼으로 클릭 한 다음 NuGet 패키지 복원 활성화 를 선택합니다.
참고 URL : https://stackoverflow.com/questions/12022154/prevent-needing-to-add-nuget-exe-to-source-control
'Nice programing' 카테고리의 다른 글
MS Excel 용 JSON 형식을 CSV 형식으로 변환 (0) | 2020.10.29 |
---|---|
데이터 주석의 Asp.Net Mvc 숨겨진 필드 (0) | 2020.10.29 |
Android의 위치 리스너가있는 백그라운드 서비스 (0) | 2020.10.29 |
C #을 Oracle 데이터베이스에 연결하는 데 필요한 최소 클라이언트 풋 프린트는 얼마입니까? (0) | 2020.10.29 |
클라우드 컴퓨팅과 그리드 컴퓨팅의 차이점은 무엇입니까? (0) | 2020.10.29 |