솔루션에서 nuget 패키지 복원을 제거


148

'NuGet 패키지 복원 사용'을 사용하여 솔루션에 최근 nuget 패키지 복원 기능을 추가했습니다. http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

그러나 빌드 서버가 손상되어 해결할 시간이 없었으므로 제거하고 싶었습니다. 내가 아는 한 그에 대한 옵션은 없으므로 모든 * .csproj 파일에서 다음 줄을 수동으로 제거했습니다.

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

문제는 이제 * .csproj 파일을 체크 아웃하거나 솔루션을 열 때마다 라인이 자동으로 다시 추가되어 실수로 파일을 체크인하면 빌드가 손상된다는 것입니다.

영구적으로 제거하는 방법에 대한 아이디어가 있습니까?

업데이트 : 아래의 답변에도 불구하고 솔루션을 열 때 여전히 같은 문제가있는 사람이 계속 다시 나타납니다.


2
소스 컨트롤에서 변경 세트를 롤백 할 수 없습니까?
Betty

잘 꽤 큰 변경 집합했지만, 귀하의 의견 덕분에 나는 모습을했고, 그것 또한 문제가 해결되는지 아니라보고 있음을 삭제 솔루션 경로에 .nuget 폴더를 추가 보인다
위브 Tijsma

빌드 서버를 수정 했습니까? 위에서 인용 한 수입 프로젝트 라인으로 인해 팀 시티 빌드가 실패하게 되었기 때문에 – 팀 시티입니까?
Baldy

@Baldy 아니 우리는 TFS 빌드를 사용하고 실제로 솔루션을 찾지 않았다, 그냥 제거 (나중에 다이빙 계획)
Wiebe Tijsma

3
NuGet 팀 이이 문제를 해결하기 위해 문제를 만들었습니다. nuget.codeplex.com/workitem/3756
deadlydog

답변:


214

잘 보지 못했습니다. 프로젝트 파일에 다른 속성이 추가되었습니다.

<RestorePackages>true</RestorePackages>

모든 * .csproj 파일에서이 행과 모든 행을 수동으로 제거하면됩니다.

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

최신 정보:

프로젝트 파일을 수동으로 편집 하는 경우 솔루션을 닫고 한 번에 프로젝트에서 모든 줄을 삭제했는지 확인하십시오 . 그렇지 않으면 프로젝트가 다시로드되면 다시 추가됩니다 ...

UPDATE2 :

솔루션 루트에서 .nuget 폴더도 삭제하십시오.

업데이트 3 :

이후 버전의 NuGet은 제거해야 할 다른 섹션을 추가합니다.

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

업데이트 4

내부 NuGet.Targets에있는 .nuget폴더 허위로 전환 ... 새로운 프로젝트에 추가됩니다 다른 섹션이있다.

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>

7
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />.csproj 파일의 끝에 수동으로 제거 해야하는 것도 있음을 발견했습니다 .
TimDog

6
하아! 천천히 뒤로
물러서

5
이것도 저를 괴롭 혔습니다. 프로젝트가 여러 솔루션에있는 경우 패키지 복원 기능으로 인해 많은 문제가 발생합니다.
데미안

7
VS2010은 csproj / msbuild 파일 (특정 수정 사항을 선택하지 않고)을 캐시하는 것처럼 보이므로 "솔루션을 닫아야합니다"는 실제로 여기에서 중요합니다. VS2012 에서이 동작을 알지 못했지만 VisualStudio에서 이러한 파일을 수정할 때 많은 어려움을 겪었습니다.
Xavier Decoster

4
NuGet 팀 이이 문제를 해결하기 위해 문제를 만들었습니다. nuget.codeplex.com/workitem/3756
deadlydog

48

Nuget 패키지 복원을 비활성화하려면 :

  1. .nuget 폴더 삭제
  2. 모든 .csproj 파일에서 특정 줄 제거

제거 할 줄 :

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

참고 : 솔루션을 다시로드하기 전에 한 번에 모든 변경 사항을 수행해야합니다. 그렇지 않으면 변경 사항이 다시 추가됩니다.

이는 다음 기사를 기반으로합니다. http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

또한이 옵션이 비활성화되어 있는지 다시 확인하고 싶을 수도 있습니다. http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


NuGet 팀 이이 문제를 해결하기 위해 문제를 만들었습니다. nuget.codeplex.com/workitem/3756
deadlydog

1
덕분에, 나를 위해 그것을 그냥 옵션을 disabeling되었다
마틴 Kieft

많은 프로젝트에서 저장소를 정리하는 데 IFix 도구를 성공적으로 사용했습니다. 기본적으로 이러한 단계를 자동화합니다. visualstudiogallery.msdn.microsoft.com/…
angularsen

.nuget 폴더는 숨겨져 있으므로 프로젝트뿐만 아니라 디렉토리 에서 제거해야합니다 .
Erik Bergstedt

8

이 설정이 아닌가요?

옵션 ...- > Nuget 패키지 관리자 -> [선택 취소] Nuget이 누락 된 패키지를 다운로드하도록 허용

여기에 이미지 설명을 입력하십시오

Visual Studio Professional + Resharper 8.2를 사용하고 있습니다.


패키지 폴더를 삭제하고 패키지 캐시를 지워서 문제를 해결했습니다. 감사!
Tresto 2016 년

1
아니요, .proj 파일을 업데이트 한 후에도 문제가 발생하지만 여기서도 문제가 없습니다. :-)
schmoopy

빌드하는 동안 출력 창에이 정보가 표시됩니다.이 Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'방법을 선택해야합니다.
Moslem Ben Dhaou

1
이것은 Nuget 패키지 복원과 관련이 없습니다. 이전 버전의 VS에는 폴더를 만들고 파일 을 참조하도록 수정 하는 "Nuget 패키지 복원 사용"이라는 프로젝트에 대한 컨텍스트 메뉴 항목 이있었습니다 . 당신은 VCS에 노력을 기울여야했고 (이제 문제를 해결하지 않으면 안됩니다!) 그런 추악함. 현재 존재하며 VS의 내장 패키지 복원. OP는 VS의 올바른 내장 패키지 복원 지원을 비활성화하는 방법이 아니라 오래된 나쁜 방법을 제거하는 방법을 묻고 있습니다. .nuget/.csproj.targetsnuget.exemsbuild /restore
binki

5

현재 MSBuild 통합 패키지 복원을 사용하는 솔루션을 자동 패키지 복원으로 마이그레이션 할 수 있습니다. 내가 이해 한 바에 따르면 CI 빌드 문제가 발생하는 사람들에게 도움이 될 것입니다. (실수하면 정정하십시오).

nuget 웹 사이트 ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore) 에서 자동 패키지 복원을 사용하기 위해 MSBuild 통합 솔루션 마이그레이션 문서를 참조하십시오.

TFS를 사용하거나 사용하지 않고 변환하기위한 정보가 있습니다.

David Ebbo는 http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html에 정보를 게시했습니다.



3

NuGet에는 자동 패키지 복원으로 마이그레이션하는 방법에 대한 블로그 게시물이 있습니다. http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1 은 필요한 게시물을 자동으로 (및 재귀 적으로) 제거 하는 powershell 스크립트를 블로그 게시물에 참조합니다.

NuGet 패키지 복원 비활성화 옵션을 직접 제공하면 해결되지 않음으로 표시됩니다 : https://nuget.codeplex.com/workitem/1883


2

승인 된 솔루션을 따라 2012 년에는 소용이 없었습니다.

  1. VS를 완전히 닫습니다
  2. 업데이트 <RestorePackages>true</RestorePackages><RestorePackages>false</RestorePackages>와 삭제<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> 라인을
  3. 또한 이름 nuget.exenuget.exe.NotExe

2

구식 NuGet 패키지 복원을 사용하여 프로젝트를 정리해야하는 사람은 여기 에서 IFix 도구를 사용할 수 있습니다. 가 프로세스를 자동화합니다.

설치 프로그램 을 실행 한 다음 (에 IFix추가됨 PATH) 다음을 실행하십시오.

IFix nugetrestore --fix

먼저 검사 모드에서 실행하여 정리 대상을 확인할 수 있습니다.

IFix nugetrestore --check

1

나는 같은 문제가 있었다. 내가 한 일 : 1) 솔루션의 각 프로젝트 .csproj 파일로 이동하여 메모장에서 파일을 연 다음 XML 부분을 제거하고 저장하십시오.

2) 그런 다음 전체 솔루션에서 모든 package.config 파일을 제거했습니다.

3) 그런 다음 .nuget 및 package 폴더를 제거해야했습니다.

이 시점에서 나는 완전히 NuGet 무료 솔루션을 가지고있었습니다.

4) 그런 다음 필요한 DLL을 수동으로 참조하고 컴파일을 수행하고 NuGet 패키지가 필요없이 솔루션이 챔프처럼 실행되었습니다.


1

[$(SolutionDir)\.nuget\nuget.targets] .nuget폴더와 nuget.targets파일 이있는 솔루션 디렉토리로 이동하여 폴더를 삭제하고 마지막으로 csproj 에서 remove line 을 한 번 변경하십시오 .

문제는 다시 버그로 돌아 오지 않습니다.



0

VS2012 RC에서 프로젝트를 여는 동안 실수로이 "패키지 복원"옵션을 활성화하고 다음과 같은 오류가 발생하기 시작했습니다.

"오류 1 'C : \ FolderX \ SomeProject.nuget \ nuget.exe'를 찾을 수 없음" "

오류를 수정하려면 위 지침을 따르고 메모장에서 각 프로젝트 파일을 열고 해당 RestorePackage 줄을 제거했습니다.


0

다음 단계를 수행하여이 문제를 해결할 수있었습니다.

1) 현재 체크 아웃 된 모든 파일 변경 사항을 백업하십시오.

2) C : \에서 솔루션 폴더를 실제로 삭제하십시오 (TFS에 맵핑 된 경로).

3) 솔루션에 대한 최신 TFS를 받으십시오.

4) 1 단계에서 수행 한 백업에서 변경 사항을 복사하십시오 (있는 경우).

그것이 도움이되기를 바랍니다!


-2

똑같은 문제가 발생하여 프로젝트 파일에서 모든 .nuget 및 RestorePackage 태그를 제거하려고 시도했지만 .nuget 및 RestorePackages 태그를 얼마나 철저하게 검사했는지는 중요하지 않습니다. 어딘가에 숨겨진 참조가 있다고 생각합니다.

결국 파일을 복사하고 새 프로젝트를 만들어 솔루션으로 가져 오는 것이 더 쉬웠습니다.


-8

너겟 짜증. 너겟을 제거하고 이것이 문제가되는 프로젝트의 루트 디렉토리에있는 packages.config에서 패키지 요소를 제거하거나 주석 처리하십시오. 대신 일부 lib 폴더에 직접 참조를 사용하십시오.

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>

사용 방법을 모르고 이해하려고 노력하지 않으면 다른 제품과 마찬가지로 '흡입'됩니다.
Wiebe Tijsma

그것은 ture이지만 내 의견으로는 너의 프로젝트를 충분히 통제하지 못한다. 또한 Nuget GUI에는 심각한 업그레이드가 필요합니다. 1. 직관적이지 않습니다. 2. 패키지를 관리하기가 어렵습니다. 3. 복원을 해제하기가 ​​어렵습니다. 4. 불필요한 패키지를 다운로드하십시오. 5. 때때로 팩을 복원 할 수 없습니다
Igor N

패키지 관리자가 전혀없는 것으로 생각되지만 어느 정도 동의합니다. 그들이 nuget 3.0에 대한 심각한 GUI 업그레이드 작업을하고있는 것 같습니다 : blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.