Các gói NuGet bị thiếu


297

Tôi đã tìm kiếm vấn đề này nhưng không có giải pháp nào hiệu quả. Tôi đã cài đặt Visual Studio Professional 2015 và tôi đang sử dụng TFS. Phiên bản NuGet của tôi là 3.1.6. Vấn đề này chỉ xảy ra trong dự án API / API C # của tôi.

Tôi nhận được lỗi dưới đây:

Dự án này tham khảo (các) gói NuGet bị thiếu trên máy tính này. Sử dụng NuGet Gói Restore để tải chúng xuống. Để biết thêm thông tin, hãy xem http://go.microsoft.com/fwlink/?LinkID=322105 . Tệp bị thiếu là .. \ tests \ Microsoft.Net.Compilers.1.0.0 \ build \ Microsoft.Net.Compilers.props

  1. Tôi không có thư mục .nuget trong các giải pháp của mình.
  2. Tôi có một thư mục gói trong giải pháp và khi tôi xóa nó, có vẻ như NuGet sẽ xây dựng lại các phụ thuộc nhưng dự án vẫn có lỗi ở trên.
  3. Tôi đã thử xóa dự án khỏi TFS và nó đã không sửa được.
  4. Cùng với lỗi trên, tất cả các tài liệu tham khảo trong dự án đều có các dấu hiệu cảnh báo màu vàng và nói rằng chúng bị thiếu.
  5. Khi tôi kiểm tra Trình quản lý gói NuGet cho dự án, mọi thứ "thiếu" đều có dấu màu xanh bên cạnh, bao gồm Microsoft.Net.Compilers.
  6. Tôi đã thử thêm một dự án API / API Web mới và nó đã gặp phải một vấn đề tương tự trong đó hầu hết các tài liệu tham khảo như Owin đều "mất tích" với dấu hiệu cảnh báo màu vàng.

phiếu bầu để đóng câu hỏi này do số lượng câu trả lời được đăng tải chất lượng thấp của người dùng mới.
ZF007

Câu trả lời:


265

Tôi đã có cùng một lỗi (thiếu chính xác cùng một gói) ngày hôm nay. Tôi cũng đã tạo một dự án API MVC + Web.

Nó rất vui vì tôi đã chuyển các tệp ứng dụng (bao gồm tệp .csproj) sang một vị trí khác. Tôi đã cập nhật thủ công tệp .sln nhưng tất cả các gói phụ thuộc hiện tại (Visual Studio 2015) được lưu trữ trong tệp .csproj.

Chỉnh sửa tệp .csproj và sửa đường dẫn tương đối vào thư mục giải pháp (chứa thư mục gói) đã giải quyết vấn đề cho tôi.


2
Sao chép thư mục Microsoft.Net.Compilers ... từ thư mục gói cũ sang vị trí gói mới sau khi di chuyển nếu thiếu có thể là bước cuối cùng bắt buộc.
Justin Wignall

2
Tôi vừa gỡ bỏ gói ONE đó khỏi máy tính của mình và nó đã hoạt động.
SpoiledTechie.com 13/03/2016

1
Tôi cũng gặp lỗi khi di chuyển vật lý một dự án đến một vị trí khác trong giải pháp Visual Studio. Không có giải pháp nào trên trang này hoạt động, vì vậy tôi đã tạo một bản sao của dự án (trên hệ thống tệp) và xóa hoàn toàn tất cả các tham chiếu đến dự án ban đầu trong VS. Sau đó tôi đã tạo lại dự án và sao chép các bit và các mảnh vào nó (từ bản sao tôi đã tạo). Lao động, nhưng nó đã làm việc.
Andrew Jens

2
Tôi cũng gặp vấn đề tương tự sau khi chuyển dự án từ địa điểm này sang địa điểm khác. Đường dẫn sửa lỗi của các gói trong tệp ".csproj" đã khắc phục sự cố.
Nirman

2
@ MiłoszWieczorek Tôi đã thử chạy lệnh trong Gói quản lý gói và nó không giải quyết được vấn đề. Nó tải lại tất cả các gói, nhưng các tài liệu tham khảo vẫn không được tìm thấy.
Francisco Keyboardnconia

360

Tôi đã giải quyết vấn đề của mình bằng cách xóa mã này khỏi .csprojtệp:

<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>

5
Câu trả lời được chấp nhận sẽ không hoạt động vì tôi đang tham khảo dự án trong nhiều giải pháp riêng biệt. Đây là sửa chữa duy nhất. Nhận xét nó ra và nó làm việc như một bùa mê.
Levi Fuller

31
Tôi có thể sai, nhưng tôi tin rằng đây là "đánh con ruồi bằng búa". Nếu vì bất kỳ lý do gì, vị trí được xuất bản sẽ mất bất kỳ gói nuget cần thiết nào khác, nó sẽ không bị lỗi, mang lại cho bạn một kết quả dương tính giả (nghĩa là triển khai thành công, nhưng hệ thống thất bại). Không phải là một người hâm mộ, nhưng tôi sẽ không đánh giá thấp nó bởi vì có những khía cạnh của nuget tôi vẫn chưa quen thuộc.
HeyZiko

4
Điều này cũng làm việc cho tôi. Điều lạ là thông báo lỗi đã được mã hóa cứng trong chính tệp proj ...
Ryan Peters

7
Xác nhận vấn đề này vẫn tồn tại trong VS 2017. Tôi đã di chuyển một dự án từ visual studio 2015 đến 2017 và nhận được thông báo lỗi này khi biên dịch lần đầu tiên vào năm 2017. Điều này đã sửa lỗi.
Tom McDonald

2
Tại sao xóa chức năng, có nguy cơ phá vỡ dự án của bạn vv bằng cách làm điều này? Như @HeyZiko chỉ ra điều này có thể dẫn đến các vấn đề về sau. Tôi chỉ có thể làm những gì lỗi "Cho phép khôi phục gói". Xem câu trả lời của tôi ở đâu đó trên trang này ...
Nicow

45

BEWARE - gói cập nhật này cho toàn bộ giải pháp không chỉ cho dự án.

Nếu bạn có thêm một gói nuget bị lỗi trong khi xây dựng giải pháp của mình, hãy sử dụng lệnh sau bằng cách sử dụng Bảng điều khiển lệnh Nuget từ Công cụ> Trình quản lý gói Nuget> Bảng điều khiển trình quản lý gói. Nó sẽ cài đặt lại tất cả các gói hiện tại của bạn.

Update-Package –reinstall

Cập nhật:

Bạn có thể vượt qua tên dự án cụ thể như một tham số.

Update-Package –reinstall -ProjectName SampleApp

1
Điều này làm việc cho tôi. Lỗi xuất hiện sau đó đối với tôi sau khi đẩy các thay đổi thông qua git trên một hệ thống và kéo chúng trên một hệ thống khác. Có thể .gitignore của tôi không được cấu hình đúng cho các gói nuget.
Patrick Borkowicz

16
Coi chừng ... gói cập nhật này cho toàn bộ giải pháp không chỉ cho dự án.
Người dùng SO

1
Điều này làm việc cho tôi. NuGet tiếp tục phàn nàn về các gói bị thiếu, nhưng Visual Studio sẽ không tự động giải quyết. Phải mất vài phút để chạy hoàn toàn, nhưng lệnh này đã khắc phục vấn đề của tôi.
Nick Alexander

8
Bạn có thể thêm tham số -ProjectName để làm cho nó chỉ dành cho dự án cụ thể, không phải toàn bộ giải pháp.
Miłosz Wieczorek

2
VS2017 đã bị hỏng một nửa trong số này và nó đã phá vỡ mọi thứ
cuộn vào

19

Tôi đã có thông điệp chính xác bực bội này. Điều cuối cùng làm việc cho tôi là xóa tất cả các tệp và thư mục bên trong / gói và để VS tìm nạp lại mọi thứ trong bản dựng tiếp theo.


2
Tôi đã nhấp chuột phải vào Giải pháp và Restore Nuget Packages.
Vitor Canova

1
Tôi không có Gói Khôi phục Nuget nào khi nhấp chuột phải vào giải pháp .... Tôi đang sử dụng VS 2013 ..
Ziggler

cũng phải đảm bảo rằng nó khôi phục lại đúng gói. kiểm tra .csproj bằng ghi chú / Chỉnh sửa * .csproj để biết vị trí của thư mục gói
AceMark

15

Tiberiu là chính xác. Tôi đã phải chỉnh sửa tệp .csproj của mình khi các tệp bị di chuyển và gây ra sự cố này

 <Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

Tôi đã thay đổi ở đầu tập tin và ở dưới cùng

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />

Điều cuối cùng đã làm cho tôi là chỉ chỉnh sửa dòng ở cuối tập tin, nhưng không phải ở trên cùng
ISAE

15

cách này đã giải quyết lỗi của tôi: Để mở tệp .csproj để cập nhật trong Visual Studio 2015+ Solution Explorer:

Nhấp chuột phải vào tên dự án -> Unload Project

Nhấp chuột phải vào tên dự án -> Chỉnh sửa .csproj

Xóa các dòng sau:

<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\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
    <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
    <Error Condition="!Exists('packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
    <Error Condition="!Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
  </Target>

Nhấp chuột phải vào tên dự án -> Tải lại dự án

Cuối cùng Xây dựng giải pháp của bạn.


Sau khi sửa thủ công các đường dẫn trong csproj, tôi đã xóa phần SureNuGetPackageBuildImports và nó hoạt động hoàn hảo. cảm ơn
willyMon

11

Tôi đã giải quyết vấn đề này bằng cách xóa đoạn mã sau khỏi tệp .csproj

<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('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />


1
Nhưng tại sao những sai lầm ở nơi đầu tiên? Lỗi trong Visual Studio?
Người bảo vệ một

8

Một sự kết hợp của 2 câu trả lời làm việc cho tôi. Đầu tiên tôi sửa đổi tệp .csproj để xóa tham chiếu sang phiên bản 1.0.0

< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >

  ----Error---

< /Target>

và sau đó đã làm

Update-Package -Reinstall

từ và nó đã làm việc


6

Đối với tôi, vấn đề là khi tôi sao chép giải pháp vào một thư mục mới và mở nó, nó đã bị thiếu thư mục Nuget như hình dưới đây. Tôi đã sao chép thư mục này và mọi thứ đều hoạt động. Lưu ý: Thư mục tương tự này nằm trong kiểm soát nguồn của chúng tôi nhưng không phải trong dự án giải pháp này, nó đã lên một thư mục.

nhập mô tả hình ảnh ở đây


6

Chỉ cần kích hoạt Khôi phục Gói NuGet. Nhấp chuột phải vào giải pháp của bạn> chọn 'Kích hoạt khôi phục gói NuGet'.

Nhấp chuột phải vào giải pháp của bạn> chọn 'Kích hoạt khôi phục gói NuGet'

Điều này sẽ tạo thư mục .nuget với tệp NuGet.Config và khắc phục sự cố của tôi.


Cảm ơn!! Tôi cũng đã đối mặt với tình huống tương tự và 'Kích hoạt khôi phục gói NuGet' đã hoạt động.
Hoàng tử Jain

18
Nó không làm tôi lo lắng, nó nói "Tất cả các gói đã được cài đặt và không có gì để khôi phục."
Dalibor

5

Tôi đang sử dụng VS2012 và gặp phải lỗi tương tự. Tôi đã xóa thẻ Target sau khỏi tệp .csproj và nó bắt đầu biên dịch mà không có bất kỳ lỗi nào.

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>

5

Để mở rộng một vài câu trả lời ở đây, có, bạn có thể xóa khối sau khỏi tệp .csproj của mình:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

và điều này khắc phục sự cố, tuy nhiên trong trường hợp của tôi, tôi nhận thấy rằng tôi đã có các tham chiếu bổ sung cho .NET.Compilers và .CodeDom.Providers với các phiên bản khác nhau:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\

Khi gói của tôi.config chỉ tham chiếu như sau:

<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"

Việc xóa các mục 1.0.0 khỏi tệp .csproj đã khắc phục sự cố.


2

Đối với bất kỳ ai gặp phải vấn đề tôi gặp phải (một số nhưng không phải tất cả các gói được khôi phục trên máy chủ bản dựng), phần cuối cùng của câu đố đối với tôi là thêm NuGet.config vào thư mục gốc của giải pháp, kết nối với .SLN như David Ebbo đã giải thích tại đây: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html .

Từ bài đăng trên blog của Ebbo, nội dung tệp đối với tôi chỉ đơn giản là

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

CẬP NHẬT:

URL API NuGet đã thay đổi cho v3 (hiện tại kể từ tháng 9 năm 2016). Từ https://www.nuget.org/

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

1

Thông báo lỗi là hoàn toàn chính xác. Tôi đã thử tất cả các thủ thuật và không có cách nào làm việc. Dự án (thử nghiệm ứng dụng Web MVC đơn giản) đã chuyển từ Cộng đồng Windows 8.1 VS 2015 sang hộp thử nghiệm mới của tôi trên Windows 10. Tất cả các bản cập nhật mới nhất cho VS 2015 được áp dụng. Tôi thậm chí không thể cài đặt bất kỳ phiên bản mới hơn của gói trình biên dịch.

Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

Cuối cùng tôi cũng chỉ sao chép Microsoft.Net.Compilers.1.0.0 từ dự án cũ sang dự án mới và nó đã hoạt động. Sau đó tôi có thể bắt đầu cập nhật các gói khác lên phiên bản mới hơn. Trông giống như một lỗi quá trình nâng cấp dự án nuget với tôi.

LƯU Ý: Dự án ban đầu được tạo ra trong VS 2015 và không có bất kỳ phương pháp nuget kế thừa nào.


1

Giải pháp hoạt động trong trường hợp của tôi - Visual Studio 2015 Enterprice, dự án .NET 4.6.1

  1. Nâng cấp lên Cập nhật 3
  2. Cài đặt công cụ phát triển web

Visual studio cài đặt wizzard


1

Đối với tôi, các gói nằm ở dưới đường dẫn chính xác, nhưng các thư mục xây dựng bên trong thư mục gói thì không. Tôi chỉ đơn giản xóa tất cả các gói mà nó nói bị thiếu và xây dựng lại giải pháp và nó đã tạo thành công các thư mục xây dựng và các tệp .props. Vì vậy, các thông báo lỗi là chính xác trong việc thông báo cho tôi rằng có gì đó không đúng.


1

Tôi gặp sự cố này khi bản dựng không thành công trong Azure, khi được triển khai từ Git.

Hóa ra .gitignore của tôi đã loại trừ buildthư mục từ ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props.

Khi buildthư mục đã được (buộc) cam kết với Git, vấn đề đã được giải quyết.


1

Tôi đã giải quyết vấn đề tương tự với các bước sau

  1. Gói đã xóa <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net46" /> từ tập tin pack.config.
  2. Chỉnh sửa tệp dự án .csproj và xóa các cài đặt bên dưới. <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\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />   </Target>

    1. Chuyển đến bảng điều khiển quản lý gói và chạy lệnh Update-Package –reinstall

Điểm # 2 và 3 được đưa ra bởi những người dùng khác và tôi đánh giá cao những người dùng đó. Điểm # 1, loại bỏMicrosoft.CodeDom.Providers.DotNetCompilerPlatform tệp từ gói.config là quan trọng hơn. Ngoài ra, sau khi chạy lệnh được đề cập ở điểm # 3, vấn đề đã được giải quyết. Tất cả các gói không mong muốn được loại bỏ và tham chiếu gói yêu cầu cập nhật.

Hy vọng điều này sẽ giúp được ai đó.


0

Tôi không thể tìm thấy bất kỳ giải pháp nào cho vấn đề này vì vậy tôi đã thêm một bản sao của nuget.exe và tập lệnh powershell vào thư mục gốc của giải pháp có tên prebuild.ps1 với nội dung sau.

$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args

Tôi đã gọi tập lệnh powershell này trong bản dựng của mình trong đường dẫn tập lệnh Pre-Build nhập mô tả hình ảnh ở đây


0

Của tôi làm việc khi tôi sao chép thư mục gói cùng với tập tin giải pháp và thư mục dự án. Tôi chỉ không sao chép thư mục gói từ nơi trước.


0

Bạn cũng có thể sử dụng thông báo lỗi được đề xuất như một gợi ý. Dưới đây là cách, tìm Gói quản lý cho Giải pháp và nhấp vào giải quyết gói nuget bị thiếu.

Đó là nó


0

Nhận xét Tùy chọn trình biên dịch trong WebConfig:

<!--<system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>-->

Cập nhật phiên bản mới nhất của gói trong tệp cấu hình gói

  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />

Xây dựng lại nếu tất cả đều ổn, không cần tiến hành, khác Nhấp chuột phải vào dự án, nhấp vào 'dỡ tải dự án' Nhấp chuột phải vào dự án một lần nữa và chỉnh sửa tệp .csproj

Xác thực đường dẫn của Codedom, nó không có net45 trong các đường dẫn trước đó, thêm thủ công, lưu, tải, xây dựng lại. Nó nên hoạt động.

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

0

Như nhiều đề xuất loại bỏ <Target>thẻ có thể làm cho nó có thể biên dịch. Tuy nhiên, hãy cẩn thận với thực tế rằng nó có tác dụng phụ khi bạn làm điều đó cho các dự án thử nghiệm.

Tôi đã gặp lỗi liên quan đến MSTest.TestAdaptergói nuget trong khi biên dịch. Đã giải quyết vấn đề đó bằng cách xóa <Target>thẻ. Mặc dù nó đã giúp xây dựng thành công, các phương pháp thử nghiệm trở nên không thể khám phá. Test explorer sẽ không liệt kê các phương thức thử nghiệm trong dự án đó và Run Test hoặc Debug Test cũng không hoạt động.

Tôi đã gặp điều này trong khi sử dụng Visual Studio 2017.Net framework 4.7, nó rất có thể xảy ra trong các phiên bản khác


1
Tôi đã chính xác vấn đề đó khi sử dụng VS2017, .Net4.7 và một dự án thử nghiệm đơn vị. Dự án đó được thêm vào nhiều giải pháp. Việc khôi phục tự động hoạt động nhưng đến sai địa điểm. Thay thế bằng $(SolutionDir)công việc nhưng cập nhật thất bại. Tôi hỏi điều đó ở đây . Bạn có giải pháp nào được tìm thấy không?
Sebastian Schumann

0

Vấn đề đối với tôi là NuGet không thể tự động nhận / cập nhật các gói vì đường dẫn tệp đầy đủ sẽ quá lớn. Đã sửa lỗi bằng cách di chuyển giải pháp của tôi vào một thư mục trong Tài liệu của tôi thay vì thư mục được lồng sâu .

Sau đó, có thể nhấp chuột phải vào giải pháp và chọn "Khôi phục gói NuGet" (có thể không cần thiết nếu bạn chỉ xây dựng và để nó làm điều đó cho bạn), sau đó chọn "Quản lý gói NuGet cho giải pháp" để nhận tất cả các gói cập nhật lên phiên bản mới nhất.

Đây là giải pháp cho một ứng dụng ASP MVC mẫu được tải xuống từ trang web của Microsoft.


0

Đối với các kỹ sư xây dựng / xây dựng, có lẽ bạn có thể sửa lỗi này chạy nuget restorevới SLN bị ảnh hưởng hoặc dự án nếu bạn thiếu SLN. Tôi phải làm điều này cho các bản dựng CI / CD cho tất cả các dự án UWP của chúng tôi.

  1. Đảm bảo nuget được cài đặt trên Slave build trong Visual Studio hoặc độc lập. Nếu là cái sau, hãy chắc chắn rằng nó ở PATH và bỏ qua bước 2.
  2. Mở bảng điều khiển VS Dev CMD hoặc tải nó thông qua bảng điều khiển đã mở, bạn có thể thực hiện với các hướng dẫn bên dưới:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    hoặc
    VS2017call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLNhoặc call nuget restore MyStuff.csprojnếu không có SLN.

0

Không chắc điều này có giúp được ai không, nhưng tôi đã gặp phải vấn đề này khi tôi xóa mã nguồn khỏi máy cục bộ của mình mà không bao giờ lưu tệp giải pháp vào TFS. (Trong quá trình phát triển ban đầu, tôi đã nhấp chuột phải và kiểm tra dự án trong Solution Explorer, nhưng quên không bao giờ tự kiểm tra giải pháp.) Khi tôi cần làm việc lại, tất cả những gì tôi có trong TFS là tệp .csproj, không có tập tin .sln. Vì vậy, trong VS tôi đã thực hiện một Tệp -> Kiểm soát nguồn -> Nâng cao - Mở từ Máy chủ và mở tệp .csproj. Từ đó tôi đã thực hiện Lưu tất cả và nó hỏi tôi muốn lưu tệp .sln ở đâu. Tôi đã lưu tệp .sln này vào thư mục dự án với các thư mục khác (App_Data, App_Start, v.v.), chứ không phải thư mục cấp cao nhất. Cuối cùng tôi đã nhận ra rằng tôi cần lưu tệp .sln lên một thư mục từ thư mục dự án để nó ' s ở cùng cấp độ với thư mục dự án. Tất cả các con đường của tôi đã được giải quyết và tôi đã có thể xây dựng lại.


0

Đối với tôi tập tin gitignore của tôi đã bỏ qua thư mục gói của tôi. Dòng gitignore sau đây đã gây ra vấn đề -

**/packages/*

Đã gỡ bỏ và nó khôi phục thư mục gói của tôi. Hy vọng điều này sẽ giúp người khác.


0

Tôi đã khắc phục được lỗi này, thực sự tôi đang có một phiên bản khác của MSTest.TestAd CHƯƠNG (1.3.2) trong thư mục gói của tôi và trong các tham chiếu tệp .csproj đã trỏ đến MSTest.TestAd CHƯƠNG (1.1.0). Tôi đã thay thế tất cả MSTest.TestAd CHƯƠNG (1.1.0) thành MSTest.TestAd CHƯƠNG (1.3.2) và điều này đã giải quyết vấn đề của tôi.


0

Tôi nhận ra câu hỏi này đã cũ, tuy nhiên hôm nay tôi đã gặp phải tình huống tương tự và muốn ném 2 xu của mình cho bất kỳ ai gần đây phát hiện ra vấn đề này. Một dự án ASP MVC mà tôi đã tự chuyển sang thư mục con trong giải pháp của mình và sau đó gỡ bỏ và gắn lại với giải pháp, sử dụng Visual Studio 2017, đã đưa ra lỗi được đề cập. Di chuyển các thư mục "lib" và "gói" vào thư mục gốc của cùng thư mục con như dự án MVC đã khắc phục sự cố của tôi.


0

Tôi đã có cùng một vấn đề, hóa ra một trong những dự án tôi đang tham khảo nằm ngoài thư mục giải pháp (và do đó không chia sẻ cùng thư mục '/ gói'). Giải pháp hiệu quả với tôi là mở giải pháp của dự án tham khảo và xây dựng nó ở đó. Khi dự án đó được xây dựng, các lỗi đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.