이 프로젝트는이 컴퓨터에없는 NuGet 패키지를 참조합니다


313

어제 작동하는 ASP.NET MVC5 응용 프로그램이 있는데 이제 빌드하려고 할 때이 오류가 발생합니다.

이 프로젝트는이 컴퓨터에없는 NuGet 패키지를 참조합니다.

nuget이 누락 된 패키지를 자동으로 다운로드하여 설치 / 체크 할 수있는 두 가지 옵션을 선택했습니다. 또한 패키지 폴더의 모든 파일을 삭제하려고 시도한 다음 파일을 다시 다운로드했습니다. 또한 nuget을 열고 업데이트를 찾을 때 설치할 필요가 없다고 말합니다. 이 놀랍도록 성가신 문제를 넘어 서기 위해 무엇을해야할지 알 수 없습니다.


1
프로젝트를 마우스 오른쪽 버튼으로 클릭하고 해당 옵션을 선택하여 너겟 복원을 활성화했습니다. 그런 다음 너겟 폴더와 해당 폴더에 세 개의 항목을 추가하고 문제를 해결하기 위해 아무것도하지 않습니다. 나는 재건을 시도했지만 여전히 위와 같은 오류가 발생합니다.
오스틴 해리스

솔루션에 .nuget 폴더가 포함되어 있으며 NuGet을 최신 버전으로 업데이트 했습니까? 여기를보십시오 : stackoverflow.com/questions/18833649/…
David Brabant

예, 시도했지만 빌드 오류 메시지 문제를 해결하지 못했습니다.
Austin Harris

이 오류의 또 다른 이유는 The operation has timed out.오류입니다. 빌드하는 동안. 빌드 로그 또는 Visual Studio Online 빌드 실패 정보 화면 의 진단 탭 을 확인해야합니다 .
Joshua Drake

어떤 해결책도 나를 위해 작동하지 않습니다. 리포지토리에서 다운로드하고 패키지는 첫 번째 프로젝트의 올바른 파일 구조로 복원되며 두 번째 프로젝트는 찾을 수 없습니다. .csproj를 확인하면 올바른 상대 경로가 사용되고 있음을 알 수 있으므로이 문제를 해결하지 못했습니다. github.com/DanJ210/ProgrammersTest
Daniel Jackson

답변:


463

필자의 경우 .csproj 파일에서 다음을 제거해야했습니다.

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

실제로이 스 니펫에서 오류 메시지의 출처를 확인할 수 있습니다.

MSBuild 통합 패키지 복원 에서 자동 패키지 복원 으로 변환하고있었습니다 ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore )


12
이것은 나를 위해 일했지만 <Target> </ Target> 요소 만 제거하면됩니다. VS [2013]은 <Import> 요소도 제거하면 복원하는 것처럼 보였습니다.
Robert Taylor

3
이것은 정말로 믿어지지 않습니다. Microsoft가 모든 것을 그렇게 어렵게 만드는 이유는 무엇입니까?
dimiguel

11
이것이 제거 될 수 있다면, 왜 처음에 존재합니까?
OK999

1
OK9999, 언젠가는 솔루션을 마우스 오른쪽 단추로 클릭하고 "NuGet 패키지 복원 사용"을 선택하여 이전 버전의 Visual Studio에서 Visual Studio를 사용하도록 설정해야합니다. 더 이상 필요하지 않습니다
Loren Paulsen

3
나는 물건을 삭제하는 것과 관련된 솔루션을 좋아합니다.
Todd Menier

86

한 가지 해결책은 .csproj 파일에서 다음을 제거하는 것입니다.

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

어떻게?

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. 프로젝트를 언로드하십시오.
  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. csproj를 편집하십시오.
  3. 파일에서 부품을 제거하십시오. 저장.
  4. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. 프로젝트를 다시로드하십시오.

한 장소에서 다른 장소로 프로젝트를 옮길 때 이것은 효과적입니다.
Dean Seo

4
@IvanSantiago 그것은 이미 같은 솔루션으로 위의 ANSWERED되었습니다! .. 투표 DOWN! ...
Jack

2
@ ClintEastwood 내 대답 은 그것을 수행하는 방법 을 설명 했습니다. 그 차이입니다. 사용자가 위의 답변과 달리 내 답변 에 대한 방법을 찾고 있다면 .
Ivan Santiago

2
@IvanSantiago 당신은 할 수 있습니다 : 코멘트로 추가하거나, 방법으로 원래 답변을 편집했습니다.
콜린

50

필자의 경우 솔루션 폴더를 한 위치에서 다른 위치로 옮긴 후 조금 재구성하고 프로세스에서 상대 폴더 구조가 변경 된 후에 발생했습니다.

그래서 내 .csproj파일 의 다음 항목과 비슷한 모든 항목을 편집해야 했습니다.

  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

  <Import Project="packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

(에서로 변경 한 점 ..\packages\에 유의하십시오 packages\. 경우에 따라 다른 상대 구조 일 수도 있지만 아이디어를 얻습니다.)


3
비슷한 문제 .... 디렉토리 구조의 .csproj 파일을 한 수준 위로 이동하여 ".. \ .. \ packages \ ..."에서 ".. \ packages \ ..."로 변경해야했습니다.
tmgirvin

2
비슷한 문제가 있었지만 정말 이상합니다. 하위 솔루션 모듈에서 사용하고 있었으므로 해당 솔루션에서는 문제가 없었지만 다른 솔루션에서 해당 솔루션을 참조했을 때 패키지는 다른 위치에있었습니다. .csproj 전체에서 .. \ packages를 $ (SolutionDir) 패키지로 변경하여 수정했습니다.
JoeNCA

2
.csproj 파일을 수동으로 다루지 않으려는 경우 프로젝트에 설치 한 모든 너겟 패키지를 메모하고 삭제하고 다시 설치하면이 문제가 해결되었습니다. 이 문제가 발생했을 때 솔루션에서 프로젝트를 제거하여 자체 git 저장소에 넣으려고했습니다.
WiteCastle

이것은 .csproj가 .sln 파일과 같은 수준에 있다는 것을 의미합니까?
Simon_Weaver

@Simon_Weaver 당신의 .csproj상대 의 위치는 .sln이 맥락에서 중요하지 않습니다. 중요한 것은 귀하의 참조가 .csproj다른 곳으로 이동 했는지 여부 입니다. 그렇다면 수정해야합니다. 참조하는 모든 항목으로 '.csproj'를 이동했지만 원래 .sln위치를 유지 한 경우 .sln파일을 새 위치 .csproj-es로 수정해야하지만 .csproj파일 을 편집 할 필요는 없습니다 .
Nikita G.

22

솔루션을 마우스 오른쪽 단추로 클릭 한 다음 NuGet 패키지 복원 사용 을 클릭하여이 문제를 쉽게 해결할 수 있습니다. 옵션 있습니다.

(PS : 도구-> 확장 및 업데이트-> Nuget 패키지 관리자에서 Visual Studio 2013 용 Nuget 설치가 있는지 확인하십시오.이 확장을 먼저 설치하지 않는 경우)

도움이 되길 바랍니다.


7
이것은 너겟 패키지를 복원하는 오래된 방법이므로 피해야합니다.
머핀 맨

2
@TheMuffinMan : 새로운 방법이 무엇인지, 왜 이런 방법을 피해야하는지 명확하게 설명해 주시겠습니까 (VS 2013 오류 출력에서 ​​정확히 그렇게한다고 생각하십니까)?
CantrianBear

2
@CantrianBear 이동이 페이지에 docs.nuget.org/consume/package-restore 과라는 섹션을 찾을 수 있습니다 MSBuild-Integrated Package Restore. 이것이 옛날 방식이며 새로운 방식을 사용해야하는 몇 가지 이유가 나와 있습니다.
머핀 맨

blog.davidebbo.com/2014/01/ 에서 David Ebbo의 블로그를 참조하십시오. Now ... "NuGet은 VS에서 빌드하기 전에 항상 패키지를 복원합니다."
timB33

17

필자의 경우 Microsoft.Build.Bcl 버전과 관련이 있습니다. 내 nuget 패키지 버전은 1.0.21이지만 내 프로젝트 파일은 여전히 ​​버전 1.0.14를 가리 켰습니다.

그래서 .csproj 파일을 다음에서 변경했습니다.

  <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
   <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
  </Target>

에:

 <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />

그리고 빌드가 다시 작동했습니다.


11

TFS를 사용중인 경우

솔루션 폴더 에서 NuGet.exeNuGet.targets파일을 제거하십시오 .nuget. 파일 자체도 솔루션 작업 공간에서 제거되었는지 확인하십시오. NuGet.Config소스 제어에 패키지를 추가하지 않고 파일을 유지하십시오 .

솔루션에서 각 프로젝트 파일 (예 : .csproj, .vbproj)을 편집하고 NuGet.targets파일에 대한 참조를 제거 하십시오. 선택한 편집기에서 프로젝트 파일을 열고 다음 설정을 제거하십시오.

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<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>

TFS를 사용하지 않는 경우

.nuget솔루션 에서 폴더를 제거하십시오 . 솔루션 작업 영역에서 폴더 자체도 제거했는지 확인하십시오.

솔루션에서 각 프로젝트 파일 (예 : .csproj, .vbproj)을 편집하고 NuGet.targets파일에 대한 참조를 제거 하십시오. 선택한 편집기에서 프로젝트 파일을 열고 다음 설정을 제거하십시오.

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<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>

참조 : 자동 패키지 복원을 사용하도록 MSBuild 통합 솔루션 마이그레이션


8

패키지가 잘못된 폴더로 복원되었을 수 있습니까? csproj 파일의 경로가 올바른지 확인하십시오.

패키지가 다르면 패키지가 다른 위치로 복원되어 발생할 수 있습니다. 다음과 같은 노드 지정에서 NuGet.Config 파일을 확인하면 발생할 수 있습니다.

<add key="repositoryPath" value="..\..\Packages" />

프로젝트가 여전히 이전 위치를보고 있으므로 패키지가 복원되고 있습니다.


1
파일의 위치를 ​​옮긴 이후 경로 문제 일 수 있지만 하드 코드 된 경로가 어디에 있는지 알 수 없습니다. proj 파일을 살펴본 결과 모든 패키지 파일은 다음과 같이 상대적으로 보입니다. <Reference Include = "Antlr3.Runtime, Version = 3.5.0.2, Culture = neutral, PublicKeyToken = eb42632606e9261f, processorArchitecture = MSIL"> <SpecificVersion> False </ SpecificVersion> <HintPath> .. \ packages \ Antlr.3.5.0.2 \ lib \ Antlr3.Runtime.dll </ HintPath> </ Reference>
Austin Harris

이것을 web.config에 추가해도 도움이되지 않았습니다. <add key = "repositoryPath"value = ".. \ .. \ Packages"/>
Austin Harris

web.config에 추가하고 싶지 않습니다. NuGet.config 파일을 참조하고 상대 경로를 확인하고 싶습니다. csproj 파일과 관련된 패키지는 어디에 있습니까? .. \ packages에 있습니까? 패키지가 올바르게 복원 된 것처럼 들리지만 프로젝트가 잘못된 위치에 있습니다.
infojolt

6

나는 같은 문제가 있었다. 필자의 경우 Microsoft.Bcl.Build 패키지를 설치 하면 문제가 해결되었습니다.


이것은 나에게도 효과가 있었지만, 올바른 패키지가 패키지를 설치했는지 여부는 알 수 없다 (이것은 아래의 henkie14의 버전 변경 답변과 동일한 효과가 있거나 모든 대상을 삭제하는 것과 실제로 효과가 있습니까?
Gaz

1.0.21패키지에 파일이없는 버전 에서는 버전 설치 1.0.14시이 문제가 해결되었습니다.
FLCL

4

.csproj 파일에서 아래 줄을 제거했습니다.

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" 
Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

3

한 가지 해결책은 .csproj 파일에서 다음을 제거하는 것입니다.

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

이 프로젝트는이 컴퓨터에없는 NuGet 패키지를 참조합니다. NuGet Package Restore를 활성화하여 다운로드하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오 . 누락 된 파일은 {0}입니다.


1

이 문제를 해결하는 데 사용한 단계는 다음과 같습니다.

솔루션에 너겟 패키지를 추가하려면 다음을 수행하십시오.

  1. 너겟 패키지를 참조하려는 프로젝트 (솔루션이 아닌)를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 선택 : 너겟 패키지
  3. 팝업 창의 왼쪽에서 세 가지 중에서 선택할 수 있습니다. 온라인> Microsoft & .NET 을 선택 하면 Microsoft ASP.NET Web API 2.2 패키지 그룹화 (또는 필요한 패키지)를 설치할 수 있습니다.
  4. 이제 솔루션이 아닌 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 nuget 패키지 복원 사용을 선택 하십시오 . 그러면 컴파일시 패키지가 자동으로 다운로드됩니다.

내가해야 할 일은 솔루션에 너겟 패키지 복원을 활성화하는 것입니다. 분명히 다른 모든 것은 이미 올바르게 설정되었습니다.
schmiddy98

1

나를 위해 작동하는 솔루션에서 기존 폴더로 .nuget 폴더를 복사하고 내용을 참조했을 때 효과가있었습니다!


1

가장 먼저 시도 할 것은 솔루션을 마우스 오른쪽 단추로 클릭하고 "Nuget 패키지 복원"을 선택하는 것입니다.

제 경우에는 효과가 없었으므로 프로젝트 파일에서 "가져 오기"와 "대상"을 삭제하는 것에 대한 몇 가지 권장 사항을 따랐습니다. 이는 내 3 개 프로젝트 중 2 개에서 작동했지만 마지막 프로젝트에서 다른 오류가 발생했습니다.

효과가 있었던 것은 패키지 관리자 콘솔을 열고 다음을 실행하는 것이 었습니다.

Update-Package -reinstall -ProjectName MyProjectName

시간이 걸리지 만 모든 패키지를 다시 설치하므로 프로젝트가 문제없이 컴파일됩니다.


1

나는 같은 문제가 있습니다. 기존 프로젝트를 복사하여 솔루션 디렉토리의 폴더로 전송하여 기존 프로젝트로 빈 솔루션에 추가했을 때 문제가 발생했습니다. 그래서 csproj 파일을 편집 하고이 특정 코드 줄을 찾아야합니다. 대부분이 마지막 줄에서 찾을 수 있습니다.

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

그 줄 후에, 나는 이것들을 주석 처리해야합니다 :

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use 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('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" />
    <Error Condition="!Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" />
  </Target>
  <Import Project="..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" />

솔루션에 프로젝트가 변경되었다는 메시지가 표시되면 모두 다시로드를 선택하십시오.

여기에 이미지 설명을 입력하십시오 그런 다음 솔루션을 재구성 한 후 모든 것이 잘 작동합니다.


0

클래스 라이브러리를 MVC 웹 응용 프로그램으로 참조 할 때도 같은 문제가 발생했습니다.

문제는 두 프로젝트 사이의 너겟 패키지 버전 번호 불일치입니다.

예 : 클래스 라이브러리의 log4net은 1.2.3이지만 webapp는 1.2.6입니다.

수정 : 두 프로젝트 모두 동일한 버전 번호를 참조했는지 확인하십시오.


0

.sln 및 .csproj를 편집하는 것이 항상 그렇게 쉬운 것은 아닙니다. 오류 목록을 얻으면 패키지에 누락 된 프로젝트가 무엇인지 확인할 수 있습니다 (또한 참조 노드는 패키지가 소스 코드, 리소스, 이미지 또는 텍스트 기반 패키지가 아닌 경우 일반적으로 누락 된 어셈블리가 있음을 나타냅니다).

최신 버전의 패키지를 사용하지 않는 한 패키지를 제거했다가 추가하는 것은 좋지 않습니다. 그렇지 않으면 항상 즐거운 것이 아니라 놀라움에 대비하십시오.

예를 들어 패키지가 EntityFramework 인 경우 NuGet 갤러리 에서이 의견을 쓸 때 6.1.3 인 최신 버전을 얻습니다 .

따라서 상황을 처리하는 가장 안전한 방법은 누락 된 패키지를 하나씩 복원하는 것입니다. 예, 약간의 고통스러운 운동이지만 다른 패키지 버전으로 인해 미묘한 버그를 쫓는 것이 훨씬 더 불쾌 할 수 있습니다.

이것을 말하고 EntityFramework를 다시 누락 패키지로 만들면 Package-Manager Console에서 다음 명령을 실행할 수 있습니다.

PM> Install-Package EntityFramework -Version 6.0.1 

그러면 올바른 버전, 즉 6.0.1 이 설치됩니다. 즉 , packages.config에 지정된 버전입니다.

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="EntityFramework" version="6.0.1" targetFramework="net451" />
    </packages>


-1

솔루션 루트 폴더에 '.nuget'이라는 폴더를 만든 다음이 폴더에 다음 내용으로 'NuGet.Config'파일을 추가했습니다.

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

그런 다음 아래 $ (MSBuildProjectDirectory)와 같이 '.nuGet.targets'파일을 만들었습니다 .. \

    <!-- Enable the restore command to run before builds -->
    <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>

    <!-- Property that enables building a package from a project -->
    <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>

    <!-- Determines if package restore consent is required to restore packages -->
    <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>

    <!-- Download NuGet.exe if it does not already exist -->
    <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
    <!--
        <PackageSource Include="https://nuget.org/api/v2/" />
        <PackageSource Include="https://my-nuget-source/nuget/" />
    -->
</ItemGroup>

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
    <!-- Windows specific commands -->
    <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
    <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
    <PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
</PropertyGroup>

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
    <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
    <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
    <PackagesConfig>packages.config</PackagesConfig>
    <PackagesDir>$(SolutionDir)packages</PackagesDir>
</PropertyGroup>

<PropertyGroup>
    <!-- NuGet command -->
    <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
    <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>

    <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
    <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>

    <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>

    <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
    <!-- Commands -->
    <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -o "$(PackagesDir)"</RestoreCommand>
    <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(RestorePackages) == 'true'">
        RestorePackages;
        $(BuildDependsOn);
    </BuildDependsOn>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(BuildPackage) == 'true'">
        $(BuildDependsOn);
        BuildPackage;
    </BuildDependsOn>
</PropertyGroup>

<Target Name="CheckPrerequisites">
    <!-- Raise an error if we're unable to locate nuget.exe  -->
    <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
    <SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
    <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')"  />
</Target>

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(RestoreCommand)"
          Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />

    <Exec Command="$(RestoreCommand)"
          LogStandardErrorAsError="true"
          Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>

<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(BuildCommand)" 
          Condition=" '$(OS)' != 'Windows_NT' " />

    <Exec Command="$(BuildCommand)"
          LogStandardErrorAsError="true"
          Condition=" '$(OS)' == 'Windows_NT' " />
</Target>

<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <OutputFilename ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Reference Include="System.Core" />
        <Using Namespace="System" />
        <Using Namespace="System.IO" />
        <Using Namespace="System.Net" />
        <Using Namespace="Microsoft.Build.Framework" />
        <Using Namespace="Microsoft.Build.Utilities" />
        <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>

 <UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <EnvKey ParameterType="System.String" Required="true" />
        <EnvValue ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Using Namespace="System" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
            }
            catch  {
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.