packages
폴더 를 무시하기 위해 TFS (2013)를 가져 오려고 합니다. 열정적으로 NuGet을 사용하면서 소스 제어를 원하지 않으며 훌륭합니다!
클로킹을 시도했지만 (작동하지 않는 것 같습니다) .tfignore
파일을 추가하려고 시도했지만 아무것도 무시되지 않습니다. 왜 TFS 팀은 많은 Subversion 클라이언트처럼 폴더 나 파일을 영구적으로 무시하는 옵션을 추가하지 않습니까?
packages
폴더 를 무시하기 위해 TFS (2013)를 가져 오려고 합니다. 열정적으로 NuGet을 사용하면서 소스 제어를 원하지 않으며 훌륭합니다!
클로킹을 시도했지만 (작동하지 않는 것 같습니다) .tfignore
파일을 추가하려고 시도했지만 아무것도 무시되지 않습니다. 왜 TFS 팀은 많은 Subversion 클라이언트처럼 폴더 나 파일을 영구적으로 무시하는 옵션을 추가하지 않습니까?
답변:
NuGet은 절대로하지 말아야 할 소스 제어 관련 작업 (잘못된 형식, Microsoft!)을 수행하려고하므로 패키지를 무시하도록 NuGet 과 TFS 에 알려야합니다 . 따라서 두 가지를해야합니다.
먼저 .tfignore
솔루션 폴더에 이름이 지정된 파일을 추가하십시오 ( s
뒤에는 없음 tf
). 내용은 다음과 같아야합니다.
\packages
이는 TFS가 패키지 폴더를 무시하도록 지시합니다. 이제 파일 도 무시할 것이라고 생각할 것 입니다 repositories.config
. 그러나 그렇지 않습니다. 왜? Microsoft의 길은 이상하고 신비합니다. 실제로, 나는 그것이 아래에 요약 된 NuGet 물건의 일부라고 생각하지만, 앞으로 수정 될 것이고 repositories.config
VS를 재생성하지 않고 파일 을 유지 하려면 다음을 사용할 수 있어야합니다.
\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 작업 공간마다 적용되어야합니다. .tfignore
파일을 사용하는 것보다 훨씬 안정적으로 작동했습니다 .
TFS가 설치된 NuGet 패키지를 소스 제어에 추가하지 못하게하는 블로그 기사에서이 방법에 대한 자세한 내용을 읽을 수 있습니다 .
.tfignore 옵션이 nuget.config 설정에서 작동하지 않는다고보고하는 사람들에게는 관심이있을 수 있습니다.이 단계는 마침내 저에게 효과적이었습니다.
솔루션의 .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
packages
아닌 것 \packages
같습니다. 그것은 상대적 이 아니라 대신 해야한다고 생각합니다 .
AppData\Roaming
모든 솔루션 (이전 및 새 솔루션) 에서이 일회용을 영구적으로 설정할 수 있습니다 !
당신의에서 %AppData%\NuGet\NuGet.Config
파일의 바로 앞에 다음을 추가 </configuration>
XML 태그는 ...
<config>
<add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
... 원하는 경로를 지정할 수 있습니다. 중요한 것은 TFS 작업 영역 외부에 배치하는 것입니다!
이제 다시는 걱정할 필요가 없습니다. 솔루션 폴더에는 더 이상 패키지가 포함되지 않습니다. 모든 솔루션은 기본적으로 사용자 정의 패키지 위치를 대신 사용합니다.
참고-이 작업은 사용자별로 이루어집니다.
빌드시 솔루션을 복원하도록 설정하면 패키지 폴더 및 패키지 파일이 체크인되지만 패키지는 체크인되지 않습니다.
TFS와 함께 Git을 사용하는 경우 ".gitignore"파일을 추가해야합니다. "팀 프로젝트 | 설정 | 'add ignore file'"에서이를 수행 할 수 있습니다. 그런 다음 파일을 열고 Nuget 패키지의 내장 ignore 문을 주석 해제하십시오.
TFVC를 사용 중이고 로컬 작업 영역을 구성한 경우 Git 파일과 동일한 형식을 따르는 ".tfignore"파일을 사용할 수 있습니다. "패키지 /"가 필요하다고 생각합니다.
이것은 Visual Studio 온라인 및 VS2013에서 나에게 효과적이지 않았습니다.
다른 의견으로는이 시점에서 마일리지가 다를 수 있습니다. 이것이 제가하는 것입니다:
패키지를 포함하여 모든 내용을 확인하십시오.
솔루션의 모든 패키지를 삭제 한 후이 변경 사항을 체크인하십시오 (TFS에서 패키지가 제거됨).
솔루션을 열고 빌드하면 프로젝트에 패키지가 추가되지만 TFS는 선택하지 않습니다.
나를 위해 일한 해결책은 Nuget.Config에서 .tfignore 와 다음 설정을 모두 만드는 것입니다.
<configuration>
...
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...
</configuration>
내 .tfignore에는 다음 줄이 포함되어 있습니다.
\packages
[Visual Studio 2015 업데이트 2를 사용하고 있습니다]
이것은 이상적이지 않으며 현재 github / nuget에서 공개 문제로 기록됩니다.
Terje의 답변 은 항상 작동하지 않습니다. 때로는 잠시 동안 작동하지만 다시 한 번 더 많은 "추가"를 보류합니다.
이 문제를 영구적으로 해결하는 유일한 방법은 내 작업 영역에서 패키지 폴더를 클로킹하는 것입니다.
예를 들면 다음과 같습니다.
Type Server Local
============================================
Active $/Work/Main C:\Code\Main
Cloaked $/Work/Main/Packages