2014-04-18 5 views
21

Nuget을 사용하는 Visual Studio 2013 프로젝트가 있습니다. 필자는 솔루션의 루트 디렉토리에 packages.config 파일을 가지고 있으며, 우리가 설치하고자하는 Nuget 패키지를 정의합니다. 또한 솔루션의 루트 디렉토리에 nuget.config 파일이 있으며 packageSources와 일부 packageSourceCredentials를 정의합니다. 패키지 소스 중 하나는 우리 회사의 개인 레포입니다.Visual Studio 2013에서 nuget.config가 무시됩니다.

솔루션의 해당 루트 디렉터리에서 명령 프롬프트를 열고 nuget restore을 입력하면 올바르게 작동하고 우리 개인용 저장소에서 우리가 사용하는 사용자 지정 패키지를 가져올 수 있습니다.

하지만 Visual Studio 2013에서 솔루션을 열고 빌드하면 맞춤 패키지를 다운로드하려고 할 때 오류가 발생합니다. 왜냐하면 apparantly가 Google의 nuget.config 파일을 무시하기 때문에 Google의 개인 누들 저장소에 대해 알지 못하기 때문입니다 .

도구> 옵션으로 이동하여 개인 레포를 추가 할 수 있지만 솔루션 자체 내에서 모든 작업을 수행하므로 사용자 지정 구성 없이도 즉시 사용할 수 있습니다.

VS 2013에서 nuget.config가 무시되는 이유는 무엇입니까?

+3

Nuet이 NuGet.config 파일을 다음 순서로 검색한다는 것을 알고 있다고 가정합니다. 1. .nuget \ nuget.config 2. 해당 프로젝트 폴더에서 루트로 반복적으로 걸어갑니다. 3. % appdata % \ NuGet \ nuget.config에있을 것으로 예상되는 전역 NuGet.config 마지막으로 Users \ {user-name} \ roaming에있는 컴퓨터 전체 (사용자 별) 파일이며 Visual Studio에서 도구> 옵션으로 이동하여 개인 repo를 추가 할 때 영향을받는 파일입니다. 따라서 PowerShell 내에서 액세스 할 수 있습니다. – JamesWHurst

+0

@JamesWHurst Visual Studio에서 내 프로젝트의 nuget.config 정보를 결코 존중하지 않는다는 대신 PowerShell을 사용하여 전역 nuget.config 파일을 수정하여 대신 repo를 추가해야한다고 말하고 있습니까? –

+0

nuget.config를 솔루션과 동일한 폴더에서 .nuget (따라서 .nuget \ nuget.config)라는 하위 폴더로 이동하면 작동합니까? –

답변

3

다음과 같은 디렉토리 구조로 새 프로젝트를 만들었습니다.

-ConsoleApplication1 
    -ConsoleApplication1 
    -ConsoleApplication1.sln 
    -nuget.config 

(가) 솔루션 기능에 대한 Nuget 패키지 관리를 사용할 때 나는 내 개인의 repos 중 하나를 볼 수 nuget.config를 추가하기 전에. nuget.config를 추가하면 대화 상자 창에서 새 repos를 볼 수있었습니다. 또한 복원 nuget 사용하여 내 패키지를 복원 할 수 오전 빌드에서 VS 내에서 2013 년

내 nuget.config 내가 생각할 수있는 유일한 것입니다 귀하의 기술 문제에 대한 기반이

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
     <add key="enabled" value="True" /> 
     <add key="automatic" value="True" /> 
    </packageRestore> 
    <packageSources> 
     <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
     <add key="MyRepo" value="http://XX.XX.XXX.XX:81/host/repo" /> 
    </packageSources> 
    <activePackageSource> 
     <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 

처럼 보인다 패키지를 복원하는 최신 방법을 사용하기 전에 프로젝트에서 Nuget 패키지 복원을 비활성화하려고 시도했을 수 있습니다. 모든 프로젝트에서 동시에 카펫 폭탄 패키지 복원을하지 않으면 새로운 방법을 방해 할 수있는 일부 논리가 남아있을 수 있습니다. 예를 들어 솔루션에서 .nuget 폴더를 삭제 한 경우 nuget.config 파일이 계속 충돌하여 충돌이 발생할 수 있습니다.

+0

VS 2013에서 nuget.config 파일을 관리하는 방법은 현재 솔루션 디렉토리의 "위에"있습니까? .sln 및 .csproj 파일의 위치와 관련하여 nuget.config 파일의 위치와 관련하여 디렉토리 구조를 자세히 설명 할 수 있습니까? 솔루션 탐색기보기는 어떻게 보이나요? 그러면 nuget.config 파일을 볼 수 있습니까? –

+0

이것은 의미가 없습니다. 솔루션 디렉토리 위에 nuget.config를 배치해야하는 이유는 논리적으로 모든 솔루션에 적용될 수있는 이유입니다. 그건 맞을 수 없어 ... – crush

+0

나는 그것이 당신의 솔루션 위에 놓는 것이 완전히 의미가 있다고 믿습니다. 트렁크의 루트에 우리의 주요 솔루션 파일이 있고 정규 NuGet.config 파일이 있습니다. 그러나 우리는 또한 devs가 자신의 솔루션을 가지고있는 trunk 아래에 별도의/Devs/UserXxx 폴더 구조를 가지고 있습니다. 문제는 이러한 솔루션이 패키지 위치를 존중하지 않는다는 것입니다. 또한 우리 솔루션은 자체 패키지 폴더가 있어야하는 완전히 다른 저장소의 프로젝트를 사용합니다. 그러나 NuGet은 하나의 솔루션에서 2 개의 패키지 위치를 허용하지 않으므로 모든 패키지에 공통된 '패키지'위치를 만들어야합니다. – MarqueIV

0

솔루션 웹 사이트 프로젝트 또는 웹 응용 프로그램 프로젝트에 있습니까? 웹 사이트 프로젝트가 nuget.config 파일을 무시한다고 생각합니다.

18

NuGet.config를 편집 한 후 Visual Studio를 다시 시작하십시오!

VS2012가 NuGet.config를 다시 시작하기 전까지 변경 사항을 인식하지 못했습니다.

+0

저는 이것이 2015 프로젝트에서의 문제라고 생각합니다. 나는 어느 시점에서 재시작했지만 여전히 등록하지 않았다고 생각했지만, 작업을 시작한 후 몇 가지 철저한 테스트를 수행했으며 VS를 다시 시작한 이후 모든 것이 예상대로 작동했습니다. – JoeBrockhaus

1

솔루션 폴더 아래에있는 모든 프로젝트와 함께 다중 프로젝트 솔루션을 사용하는 경우 프로젝트 폴더에 NuGet.config를 넣는 것이 효과가 없다는 것을 발견했습니다. 개인 패키지 소스를 선택하지 않습니다. 솔루션 폴더에 NuGet.config를 넣으면 으로 작동합니다.이다

은하지 않습니다 일 :

  • 솔루션
    • PROJECTA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
      • NuGet.config

가하는 동안 일 :

  • 솔루션
    • PROJECTA
      • I는 번째 발견

    ProjectA.csproj

  • ProjectB
    • ProjectB.csproj
  • NuGet.config disableSourceControlIntegration 옵션은 \NuGet.config에 지정된 경우 작동하지 않습니다. .nuget\NuGet.config에있는 경우에만 작동합니다. 따라서 패키지 소스 구성을 보유하고있는 루트에 하나, disableSourceControlIntegration 옵션으로 .nuget 폴더에 하나씩 내 솔루션에 대한 두 개의 구성 파일이 있습니다.

    Visual Studio 2012 업데이트 5 및 NuGet 패키지 관리자 확장 2.8.5에서 테스트되었습니다.

  • 관련 문제