[tfs] 패키지 폴더를 무시하도록 TFS 받기

packages폴더 를 무시하기 위해 TFS (2013)를 가져 오려고 합니다. 열정적으로 NuGet을 사용하면서 소스 제어를 원하지 않으며 훌륭합니다!

클로킹을 시도했지만 (작동하지 않는 것 같습니다) .tfignore파일을 추가하려고 시도했지만 아무것도 무시되지 않습니다. 왜 TFS 팀은 많은 Subversion 클라이언트처럼 폴더 나 파일을 영구적으로 무시하는 옵션을 추가하지 않습니까?



답변

NuGet은 절대로하지 말아야 할 소스 제어 관련 작업 (잘못된 형식, Microsoft!)을 수행하려고하므로 패키지를 무시하도록 NuGet TFS 에 알려야합니다 . 따라서 두 가지를해야합니다.

먼저 .tfignore솔루션 폴더에 이름이 지정된 파일을 추가하십시오 ( s뒤에는 없음 tf). 내용은 다음과 같아야합니다.

\packages

이는 TFS가 패키지 폴더를 무시하도록 지시합니다. 이제 파일 도 무시할 것이라고 생각할 것 입니다 repositories.config. 그러나 그렇지 않습니다. 왜? Microsoft의 길은 이상하고 신비합니다. 실제로, 나는 그것이 아래에 요약 된 NuGet 물건의 일부라고 생각하지만, 앞으로 수정 될 것이고 repositories.configVS를 재생성하지 않고 파일 을 유지 하려면 다음을 사용할 수 있어야합니다.

\packages
!\packages\repositories.config

이제 .tfignore파일 덕분에 TFS가 패키지를 무시합니다. 다 괜찮아요? NuGet은 소스 컨트롤을 사용하고 보류중인 변경 사항에 패키지를 추가하기 때문에 잘못되었습니다 . 이제 NuGet에게 이미 잘라내라고 알려 드리겠습니다.

.nuget솔루션 폴더의 루트에 폴더를 작성하십시오 . 1 이제라는 파일을 만들어이 NuGet.config새 폴더에 넣습니다 2 . 내용은 다음과 같아야합니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

그리고 지금 당신의 패키지는 소스 제어 밖으로 유지해야한다. 소스 제어에 NuGet.config.tfignore파일 을 추가하여 손실되지 않도록하십시오.

편집 : 문제가있는 경우 패키지 폴더를 삭제하고 변경 사항을 확인한 다음 위의 단계를 수행하십시오.

또한 편집 : 새로운 버전의 Nuget에서는 발생하지 않는 것 같습니다. 따라서 VS / TFS 2017로 전환하면 위의 농구대를 뛰어 넘지 않고이 문제가 해결됩니다.

1 . 소스 제어 탐색기를 사용하여 폴더를 추가하십시오. 솔루션-> 폴더 추가-> .nuget 2를 마우스 오른쪽 단추로 클릭하십시오 . VS 2013을 사용하여 이것을 알아 냈을 때 NuGet.config가 .nuget 폴더로 이동해야한다는 것을 알았습니다. 솔루션 폴더의 루트에 NuGet.config 파일이 이미있는 경우에도 (예 : 회사에 내부 Nuget 피드가 있기 때문에) 그러나 의견 중 일부는 VS 2015의 솔루션 루트에서 제대로 작동한다고 표시했습니다. 개인적으로 git 모드에서 TFS를 사용하도록 전환했기 때문에 테스트 할 수 없습니다. 또한 사용자 정의 피드가있는 경우 Nuget.config 파일에 사용자 정의 피드와 nuget.org가 키로 있는지 확인하십시오. 그렇지 않으면 TFS가 임의로 패키지를 복원 할 수 없다고 결정하는 경우도 있습니다.


답변

위의 대안은 다음과 같습니다.

  • TFS에 패키지 폴더 추가 (파일 또는 하위 폴더 없음)
  • 패키지 폴더를 마우스 오른쪽 버튼으로 클릭하십시오
  • 왼쪽 클릭 고급
  • 망토를 클릭

이 솔루션은 TFS 작업 공간마다 적용되어야합니다. .tfignore파일을 사용하는 것보다 훨씬 안정적으로 작동했습니다 .

TFS가 설치된 NuGet 패키지를 소스 제어에 추가하지 못하게하는 블로그 기사에서이 방법에 대한 자세한 내용을 읽을 수 있습니다 .


답변

.tfignore 옵션이 nuget.config 설정에서 작동하지 않는다고보고하는 사람들에게는 관심이있을 수 있습니다.이 단계는 마침내 저에게 효과적이었습니다.

  1. 내 패키지 폴더에서 모든 것을 삭제하십시오
  2. 보류중인 폴더 주위에서 TFS에 변경 사항이 없는지 확인하십시오.
  3. VS 닫기
  4. VS를 다시 열고 솔루션을 다시로드하십시오-Nuget 복원을 사용하여 패키지를 다시 채우십시오. TFS 소스 제어에 대한 변경 사항이 보류되지 않습니다.

답변

솔루션의 .nuget 폴더에 nuget.config 파일을 추가하십시오. nuget.config 파일에 다음을 추가하십시오.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

disableSourceControlIntegration은 TFS 버전 제어를위한 비결입니다.


답변

작업 .tfignore하려면 로컬 작업 공간을 사용해야합니다 . .tfignore파일은 무시 할 파일이나 폴더가 포함 된 폴더에 있어야합니다.

솔루션 구조가 다음과 같다면 :

\Project
   \Packages
   \OtherStuff
   foo.cs

.tfignore 파일을 \ Project에 넣습니다.

\Project
   \Packages
   \OtherStuff
   foo.cs
   .tfignore

귀하의 경우에 .tfignore의 내용은 다음과 같습니다.

\packages

다음은 몇 가지 설명서입니다. http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore


답변

AppData\Roaming모든 솔루션 (이전 및 새 솔루션) 에서이 일회용을 영구적으로 설정할 수 있습니다 !

당신의에서 %AppData%\NuGet\NuGet.Config파일의 바로 앞에 다음을 추가 </configuration>XML 태그는 …

<config>
  <add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
  <add key="disableSourceControlIntegration" value="true" />
</solution>

… 원하는 경로를 지정할 수 있습니다. 중요한 것은 TFS 작업 영역 외부에 배치하는 것입니다!

이제 다시는 걱정할 필요가 없습니다. 솔루션 폴더에는 더 이상 패키지가 포함되지 않습니다. 모든 솔루션은 기본적으로 사용자 정의 패키지 위치를 대신 사용합니다.

참고-이 작업은 사용자별로 이루어집니다.


답변

빌드시 솔루션을 복원하도록 설정하면 패키지 폴더 및 패키지 파일이 체크인되지만 패키지는 체크인되지 않습니다.