NuGet Package Manager: 'AutoMapper' đã có một phần phụ thuộc được xác định cho 'Microsoft.CSharp'


77

Tôi đang cố gắng thêm AutoMapper làm phụ thuộc vào dự án sử dụng NuGet trên Visual Studio Premium 2012, nhưng không thành công.

Nó nói rằng:


Thao tác không thành công 'AutoMapper' đã có một phần phụ thuộc được xác định cho 'Microsoft.CSharp'.

Tôi có thể thêm các phụ thuộc khác.

Tôi đang sử dụng phiên bản mới nhất của trình quản lý gói cho VS 2012:

NuGet Package Manager 2.8.60318.667

Bất kỳ ý tưởng những gì tôi nên kiểm tra?


1
Có thể trùng lặp của Automapper NuGet Package thất bại
Venky

@Venky sự khác biệt giữa câu hỏi đó và câu hỏi của tôi là tôi đang sử dụng phiên bản cuối cùng của trình quản lý gói nugget
pomber

Câu trả lời:


95

Vấn đề là Trình quản lý gói NuGet của bạn quá cũ. Bạn cần NuGet 2.12 vì điều này hỗ trợ các khung .NETStandard mới hơn mà gói AutoMapper 5.0.1 NuGet đang sử dụng.

AutoMapper có phụ thuộc nhóm chỉ định khung mục tiêu của .NETStandard. Vì phiên bản Trình quản lý gói NuGet của bạn quá cũ nên nó không nhận ra khung mục tiêu này và chuyển đổi nó thành khung mục tiêu Không xác định và bạn kết thúc với các khung công tác trùng lặp vì ở đó .NETStandard được sử dụng một vài lần trong gói NuGet đó. Điều này gây ra lỗi:

'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'

Rất tiếc NuGet 2.12 không có sẵn cho Visual Studio 2012 nhưng có sẵn cho Visual Studio 2013.

Vì vậy, bạn cần cập nhật lên Visual Studio 2013 trở lên, hoặc bạn sẽ phải sử dụng gói AutoMapper NuGet cũ hơn không hỗ trợ .NETStandard.


1
Cảm ơn Matt, tôi nghĩ ý của bạn là "không có sẵn" cho VS 2012
pomber

Vì những lý do vượt quá khả năng của mình, tôi bị mắc kẹt với VS 2012, vì vậy tôi sẽ ở lại với phiên bản
previos

41

Có vẻ là vấn đề với phiên bản hiện tại của automapper:

AutoMapper 5.0.0 Thứ ba, ngày 28 tháng 6 năm 2016

Tôi đã thử với phiên bản trước và nó hoạt động:

PM> Install-Package AutoMapper -Verbose
Install-Package : 'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'.
At line:1 char:16
+ Install-Package <<<<  AutoMapper -Verbose
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

PM> Install-Package AutoMapper -Version 4.2.1
Installing 'AutoMapper 4.2.1'.
Successfully installed 'AutoMapper 4.2.1'.

Vì vậy, nếu bạn không thể cập nhật Trình quản lý gói NuGet, câu trả lời là:

PM> Install-Package AutoMapper -Version 4.2.1

1
Tôi gặp sự cố này và nhận được lỗi chính xác này từ tác vụ VSTS Build cho NuGet Packager. Tôi đã hạ cấp xuống 4.2.1 và điều đó đã sửa được lỗi.
AC4

Trước khi hạ cấp, tôi đã cố gắng nâng cấp lên 5.0.2 và nó vẫn cho tôi lỗi đó.
AC4

Tôi nhận được điều này: Không thể tìm thấy phiên bản '4.2.1' của gói 'AutoMapper'. Tại dòng: 1 char: 1 + Install-Package AutoMapper -Version 4.2.1
Joe

Câu trả lời đúng là câu được bình chọn cao hơn bởi Matt Ward. Giải pháp này không làm việc, nhưng đó là một sửa chữa rất ngắn hạn ...
MPritchard

Giải pháp của @MPritchard Matt không hoạt động với VS2012, đó là một trong những vấn đề của tôi
pomber

30

Tôi đã kết thúc việc cập nhật NuGet.exe được bao gồm trong giải pháp để có thể xây dựng các gói NuGet bằng cách chạy:

nuget.exe update -self


1
Điều đó đã khắc phục sự cố cho tôi. Nó phải là câu trả lời đúng vì thực sự hạ cấp AutoMapper không phải là một câu trả lời thích hợp.
Raffaeu

Ngoại trừ việc điều này vẫn xảy ra ngày nay khi sử dụng Nuget 4.5.1. Có vẻ như đây là một vấn đề cụ thể đối với AutoMapper
ebol2000,

26

Tôi đã gặp vấn đề tương tự trên VS2013. Tôi phải cập nhật lên VS2013 Update 5 và tải bản phân phối nuget mới nhất cho VS2013 tại https://dist.nuget.org/visualstudio-2013-vsix/v2.12.0/NuGet.Tools.vsix

Sau khi hoàn tất, tôi khởi động lại Visual Studio. Sau đó, tôi đã có thể sử dụng gói Automapper 5.0.2


1
Làm việc cho tôi quá. Cảm ơn vì đã tiết kiệm ngày của tôi.
Sameer Awate

3
Đã làm cho tôi! Cảm ơn. (Tôi cần khởi động lại VS sau khi cài đặt phiên bản Nuget mới)
Daniel Silva

17

Đi tới Visual Studio> Công cụ> Tiện ích mở rộng và Cập nhật

Tìm Cập nhật trong menu accordion bên trái, Đi tới Thư viện Visual Studio.

Bạn sẽ tìm thấy bản cập nhật cho Nuget.

Cập nhật gói nuget và thử cài đặt hoặc xây dựng dự án.

Cảm ơn, GT


Làm việc cho tôi :)
Pandiyan Cool

2

Một giải pháp khác nếu bạn gặp khó khăn với VS2012 và phiên bản Nuget cũ:

  • Tìm thư mục Cache của Trình quản lý gói Nuget của VS 2012 (với Tools- Options- Nuget Package Manager)
  • Mở AutoMapper.5.x.x.nupkgbằng Công cụ Zip yêu thích của bạn
  • Sửa đổi tệp AutoMapper.nuspec- tôi chỉ cần xóa tất cả các phụ thuộc ngoại trừ.NETFramework4.5
  • Thêm thư mục bộ nhớ cache làm nguồn Nuget (cũng trong Tools- Options- Nuget Package Manager)
  • Cài đặt Automapper bằng bảng điều khiển hoặc GUI nhưng trước tiên hãy đảm bảo chọn thư mục bộ đệm ẩn mới được thêm vào làm nguồn gói.

Tất nhiên, phiên bản tiếp theo của Automapper cũng cần phải được điều chỉnh để cài đặt nó.


0

Điều này có vẻ như không khớp giữa phiên bản .NET được gói Automapper sử dụng và dự án của bạn. Bạn có thể xác nhận phiên bản .NET mà dự án của bạn đang sử dụng không?


0

Automapper 6.0.2 - nuget 2.8.8 đưa ra lỗi này. Cần cập nhật lên 3.4.4 để làm việc này.


0

Đã xóa cả CSharp và AutoMapper. Đã cài đặt CSharp (4.0.0.0) trước và sau đó thêm Automapper (6.1.1.0). Điều này giải quyết vấn đề cho tôi.


0

Tôi đã quan sát thấy sự cố chính xác này khi mở một dự án bằng Visual Studio 2010.

Sau khi mở bằng VS2017, tôi đã có thể cài đặt AutoMapper mà không gặp bất kỳ lỗi nào.

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.