2013-08-01 17 views
24

OK, đây là lỗi xây dựng nhiều hơn lỗi lập trình. Tôi chưa bao giờ có nhiều lý do để làm cho bàn tay của tôi bị bẩn với các bản dựng, vì vậy lỗi này làm tôi bối rối.

Tôi đã cố gắng googling lỗi này với ít kết quả, phản hồi là không tồn tại, không thể hiểu được hoặc không áp dụng được.

Lỗi này là:

The "exists" function only accepts a scalar value, but its argument 
"$(PackageSourceManifest)" evaluates to "[same path];[same path]" which is not a 
scalar value. C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\ 
            v10.0\Web\Microsoft.Web.Publishing.targets 

Dù sao, tôi đào vào Microsoft.Web.Publishing.targets và tôi thấy đường, nơi nó được erroring ra. Tôi đã xây dựng chi tiết về nơi tôi đã cố gắng để xem nếu tôi có thể tìm thấy bất cứ điều gì mà bị mắc kẹt với tôi mà tôi có thể sửa chữa.

Không có gì.

Tôi đã googled cách thay đổi Tệp kê khai gói, tôi đã xem Thuộc tính xây dựng, tôi đã tìm kiếm tệp kê khai nguồn hoặc thậm chí là nội dung nào đó nói tệp kê khai nguồn, không có gì. Có lẽ tôi đang tìm kiếm quá khó hoặc có lẽ tôi chỉ không biết những gì để tìm kiếm.

Bất kỳ ý tưởng nào về cách sửa lỗi này và điều gì gây ra điều này?

+0

'[cùng path]; [cùng path]' là vấn đề, có thể chỉ là một con đường. –

+0

Bạn có thể nhận được '$ (PackageSourceManifest)' giải quyết không? – TheVillageIdiot

+0

Cuối cùng, tôi vừa tạo một dự án mới. Nó bây giờ biên dịch tốt. Tôi giả sử chuyển đổi giữa các phiên bản Visual Studio và các phiên bản khung, một cái gì đó đã sai lầm. – Madeline

Trả lời

28

Mở tệp .csproj của bạn và tìm bất kỳ thẻ nhập trùng lặp nào.

Trong trường hợp của tôi csproj có hai dòng như thế này:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio 
\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 

Hủy bỏ một trong số họ cố định vấn đề.

1

Tôi nghĩ điều này đã xảy ra với tôi khi tôi cố gắng lên web Xuất bản dự án trong VS2012 vốn đã là dự án VS2010. Vì vậy, tái tạo dự án trong VS2012 là một cách để chữa trị nó. Hoặc như @Giacomelli đề cập, xóa tham chiếu đến mục tiêu v10.0. Lưu ý rằng V10.0 = VS2010v11.0 = VS2012

+0

hoặc bạn có thể cập nhật đường dẫn đến phiên bản chính xác, như tôi đã làm. –

-1

Tôi chỉ có cùng một vấn đề và kiểm tra file csproj của tôi, tôi thấy không có gì sai, không nhập khẩu bản sao - không có gì.

Sau khi dò dẫm 30 phút, tôi đã khắc phục sự cố bằng cách mở tệp .csproj và sắp xếp lại thẻ trong đó.

Ban đầu tôi di chuyển tất cả lên đầu, nhưng nhận được thông báo lỗi rằng OutputPath không được xác định, sau đó tôi di chuyển tất cả chúng ngay bên dưới nơi chúng được xác định và mọi thứ hoạt động. Tất cả trong số họ ngoại trừ:

Hầu hết có thể di chuyển NuGet.targets từ dưới cùng của tệp là những gì thực sự đã sửa nó. Tôi không có ý tưởng, cũng không muốn lãng phí nhiều thời gian hơn.

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

+1

Đối với tôi, chỉ cần đóng, mở lại và xây dựng lại dự án đã làm việc. –

8

Tôi gặp vấn đề tương tự, do nhập không đúng $ MSBuildExtensionsPath32 $. Rõ ràng là v10.0 là dành cho VS2010 trong khi bạn đang sử dụng VS2012 (v11.0).

Do đó, thay đổi khẩu của bạn để:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" /> 

Đối với khác, nếu bạn có VS2013 (v12.0), bạn có thể thay đổi nó thành:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" /> 

Lưu ý: nếu bạn xóa dòng này như @giacomelli được đề xuất, bạn sẽ không thể sử dụng xác định tệp đích tùy chỉnh của mình.

Từ MSDN: MSBuildExtensionsPath32

http://msdn.microsoft.com/en-us/library/ms164309.aspx

Được giới thiệu vào .NET Framework 4: không có sự khác biệt giữa các giá trị mặc định của MSBuildExtensionsPath và MSBuildExtensionsPath32. Bạn có thể đặt biến môi trường MSBUILDLEGACYEXTENSIONSPATH thành giá trị không null là để cho phép hành vi của giá trị mặc định là MSBuildExtensionsPath trong các phiên bản trước đó. Trong Khuôn khổ .NET 3.5 và trước đó, giá trị mặc định của MSBuildExtensionsPath trỏ tới đường dẫn của thư mục con MSBuild trong thư mục \ Program Files \ hoặc \ Program Tệp (x86), tùy thuộc vào độ bit của quy trình hiện tại. Ví dụ, đối với quy trình 32 bit trên máy 64 bit, thuộc tính này trỏ đến thư mục \ Program Files (x86). Đối với quy trình 64 bit trên máy tính 64 bit, thuộc tính này trỏ đến thư mục \ Program Files. Do không bao gồm dấu gạch chéo ngược cuối cùng trên thuộc tính này. Vị trí này là địa chỉ hữu ích để đặt các tệp đích tùy chỉnh. Ví dụ, các file mục tiêu của bạn có thể được lắp đặt tại \ Program Files \ MSBuild \ MyFiles \ Northwind.targets và sau đó nhập khẩu vào dự án tập tin bằng cách sử dụng mã XML này:

12

Đã cùng một vấn đề trong VS 2012 -

Error 48 04115: The "exists" function only accepts a scalar value, but its argument "@(_UnmanagedRegistrationCache)" evaluates to "obj\TheQueueData.sqlproj.UnmanagedRegistration.cache;obj\TheQueueData.sqlproj.UnmanagedRegistration.cache" which is not a scalar value. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets 1091 7 TheQueueData 

Đóng và mở lại giải pháp đã thực hiện thủ thuật cho tôi.

+2

Điều này cũng phù hợp với tôi. – Jake

+0

Làm việc cho tôi. Cảm ơn! – Andrey

+0

2015 - cũng đã làm việc cho tôi. sau khi xóa tệp db cục bộ, tôi đã bắt đầu gặp sự cố này – workabyte

0

Tôi gặp lỗi tương tự trong VS2013, nhưng chỉ khi tôi cố gắng xây dựng lại dự án. Dưới đây là cách tôi giải quyết vấn đề trong điều kiện của mình, tôi hy vọng điều đó cũng hữu ích cho người khác.

Cấu hình:

  • Tôi có file nguyên cảo của tôi trong các dự án riêng biệt trong dung dịch.
  • Những dự án đã chuyển cho VS 2012.

Nguyên nhân: khi tôi bấm vào các lỗi trong các tập tin Microsoft.Web.Publishing.targets tôi phát hiện ra rằng dự án được sử dụng phiên bản VS2012 của các tập tin .Đó là các dự án mà chỉ có một phần di chuyển từ VS2012 sang VS2013.

Giải pháp: Mở dự án nguyên cảo (đầu tiên dỡ bỏ dự án) Tìm kiếm:

 <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> 
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
     </PropertyGroup> 
  • Comment dòng VSToolsPath
  • Lưu và đóng file
  • Nạp lại dự án Bạn có thể thấy màn hình di chuyển từ studio trực quan thông báo cho bạn biết rằng dự án đã được nâng cấp.

    xây dựng lại dự án, bây giờ nên làm việc

Các vấn đề liên quan