Lỗi "thuộc tính đường ra đầu ra không được đặt cho dự án này"


90

Tôi có một giải pháp đa dự án trong Visual Studio 2008. Tôi vừa thêm một Cấu hình mới có tên là Release-VersionIncrement vào giải pháp, chỉ định cấu hình "sử dụng bản phát hành" làm đường cơ sở. Tất cả các tệp dự án đã được cập nhật với cấu hình đó. Tuy nhiên, khi tôi đang cố gắng biên dịch một dự án cụ thể bằng cách sử dụng cấu hình này, tôi gặp lỗi sau:

Lỗi 5 Thuộc tính OutputPath không được đặt cho dự án này. Vui lòng kiểm tra để đảm bảo rằng bạn đã chỉ định kết hợp Cấu hình / Nền tảng hợp lệ. Configuration = 'Release-VersionIncrement' Platform = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 539 9 DataConversion

Điều gì đang xảy ra ở đây? Dự án biên dịch tốt trong cấu hình Phát hành hoặc Gỡ lỗi.


6
Tôi đã vật lộn với điều này trong nhiều giờ cho đến khi tôi nhận ra rằng danh sách thả xuống trong định nghĩa xây dựng TFS có "Bất kỳ CPU nào" chứ không phải "Bất kỳCPU" !!!!
The Muffin Man

1
Trong VS2012, menu thả xuống trong cấu hình xây dựng là "Bất kỳ CPU nào", nhưng bên trong tệp .csproj là "AnyCPU", vì vậy trong Jenkins hoặc dòng lệnh, sử dụng "AnyCPU" sẽ hoạt động.
Jirong Hu,

Câu trả lời:


94

Thông thường điều này xảy ra khi thuộc tính OutputPath của tệp dự án bị trống. Tệp dự án chỉ là tệp MSBuild . Để chỉnh sửa trong Visual Studio: Nhấp chuột phải vào dự án, chọn "Dỡ dự án", sau đó nhấp chuột phải vào dự án chưa tải và chọn "Chỉnh sửa ...".

Tìm kiếm nhóm thuộc tính Release-Versionincrement. Nó sẽ trông giống như

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-VersionIncrement|AnyCPU' ">
  <OutputPath>bin\Release-VersionIncrement\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <Optimize>true</Optimize>
  <DebugType>pdbonly</DebugType>
  <PlatformTarget>AnyCPU</PlatformTarget>
  <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
  <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
  <ErrorReport>prompt</ErrorReport>
</PropertyGroup>

Điều quan trọng ở đó là OutputPath, nó có tồn tại cho tệp dự án của bạn không? Nếu không, hãy thêm và thử lại.


33
Nếu đường dẫn đầu ra là chính xác và bạn vẫn nhận được lỗi này, bạn có thể có tham chiếu đến hội đồng hoặc các dự án khác không còn tồn tại nữa. Xóa các tài liệu tham khảo cũ. Đó là kinh nghiệm của tôi.
John K

3
Tôi chỉ tình cờ gặp lỗi này và phải sửa đổi trực tiếp tệp dự án. Mặc dù trang thuộc tính dự án cho biết "Bất kỳ CPU nào", thuộc tính này đã được đặt thành trống lúc đầu và tôi đã chọn cài đặt Nền tảng = BPC từ các biến môi trường của mình. Sau khi tôi sửa lỗi đó và đặt / đặt lại trang thuộc tính từ Bất kỳ CPU nào thành x86 và trở lại, nó vẫn không xây dựng, tuyên bố nền tảng bây giờ là 'x86' (?!?). Chắc chắn rồi, tôi đã làm theo các bước ở đây và thấy nó hiện đã được đặt thành x86, vì vậy tôi đã chỉnh sửa thủ công và bây giờ mọi người đều vui vẻ trở lại. Cảm ơn các bạn!
DaveN59

2
Tệp dự án của tôi có PropertyGroup dự kiến, với OutputPath không trống và tôi gặp lỗi này. Điều duy nhất tôi nhận thấy là Nhóm thuộc tính cho cấu hình cụ thể này là phần tử đầu tiên bên dưới nút gốc trong tệp và thuộc tính Điều kiện không có khoảng trống ở đầu và ở cuối, không giống như tất cả các Điều kiện cấu hình khác. Tại thời điểm này, tôi đã di chuyển phần tử này xuống bên dưới một số cấu hình khác (không chắc chắn tại sao nó lại quan trọng, chỉ đang thử nội dung) và thêm khoảng trắng trong điều kiện. Sau đó, nó hoạt động. Không chắc chắn điều gì đã tạo ra sự khác biệt.
Seth Flowers

2
Tôi đã có một vấn đề khác. Tôi đã sử dụng SlowCheetah để tạo các biến đổi cấu hình cho dự án windows của mình. Các cấu hình không có khoảng trắng như @sethflowers đề xuất. Tôi đã thêm những thứ đó nhưng điều đó không giúp được gì. Tôi thấy rằng có một nhóm thuộc tính khác giữa các cấu hình. Vì vậy, hãy sắp xếp điều đó ra (chỉ cần đặt nhóm thuộc tính bên dưới các nhóm thuộc tính cấu hình dự án) và sau đó vấn đề đã biến mất. Cảm ơn cho tất cả các đề xuất ở đây. Nó giúp tôi tiết kiệm thời gian !!!
Ralph Jansen

7
Deffo hãy thử với \ p: Platform = "AnyCPU" thay vì \ p: Platform = "Bất kỳ CPU nào". Tôi đã làm việc đó! Đã nhìn vào điều này cho các lứa tuổi!
Lee Englestone

78

Tôi cũng đã gặp lỗi này khi tác nhân xây dựng của chúng tôi được định cấu hình để chạy nền tảng " Bất kỳ CPU nào " (với khoảng trống như được hiển thị trong Visual Studio) thay vì " AnyCPU " (một từ như được chỉ định trong tệp dự án).


5
Tôi gặp phải vấn đề tương tự, có vẻ như ở cấp độ giải pháp, "Bất kỳ CPU nào" là hợp lệ, nhưng ở cấp độ dự án, nó là "Bất kỳ CPU". Nói cách khác, msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"vẫn ổn, tuy nhiên khi xây dựng dự án, tôi phải bỏ qua khoảng trống trong Bất kỳ CPU nào: msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUđể loại bỏ lỗi thuộc tính Outputpath.
Emil G

2
Không thể tin được, và cấu hình PITA dành cho CI. Tôi đã đấu tranh với điều này trong nhiều ngày.
Jeremy Holovacs

Tôi gặp lỗi này khi không thể tạo trên máy chủ xây dựng chính và máy chủ thay thế mà tôi đã chọn đã chuyển "Mọi CPU" thay vì "AnyCPU". Sau khi kiểm tra, có một số khác biệt về số phiên bản của MSBUILD và phần mềm khác. Cảm ơn câu trả lời của bạn,
Gilles

1
Tôi không thể tin rằng không gian là thủ phạm!
Alexandra

36

Tôi đã gặp vấn đề tương tự khi sử dụng MSBuild đầu tiên. Giải pháp của tôi là: sử dụng thuộc tính OutputPath chắc chắn. Như thế này:

msbuild XXX.csproj /p:OutputPath=bin\Debug.

Điều này đã giải quyết vấn đề của tôi cho bản dựng Dịch vụ đám mây TeamCity Azure. +1
starmandeluxe

Tương tự như vậy đối với tôi với Bản dựng CI của VSO.
StriplingWarrior

11

Trong trường hợp của chúng tôi, chúng tôi đang chạy một tập lệnh xây dựng trên các hộp dành cho nhà phát triển HP của chúng tôi. HP có một số biến môi trường mà họ đã thiết lập cho các mục đích riêng và một trong số đó là PLATFORM (dường như được sử dụng cho "HP Easy Setup").

Xóa biến môi trường PLATFORM đã hoạt động.

Bạn cũng có thể chứng minh tập lệnh xây dựng của mình trong tương lai bằng cách chỉ định nền tảng, tức là
msbuild /p:Platform=AnyCPU.


Điều này đã bắt gặp tôi trên máy tính xách tay HP mới của tôi - cảm ơn @Boggin - điều này sẽ không xảy ra với tôi.
Rob Cooper

9

Nếu Visual Studio phàn nàn cụ thể rằng "Platform = 'BPC'" thì bạn có thể dễ dàng khắc phục điều này bằng cách xóa biến môi trường "Platform".

Xóa cậu bé xấu này.

Bây giờ khởi động lại Visual Studio và bạn đã sẵn sàng.


6

Giống như " Richard Dingwall " đã gợi ý, vấn đề liên quan đến VS sử dụng phiên bản hiển thị của " Bất kỳ CPU nào " thay vì phiên bản MSBuild thực sự ghi " AnyCPU "

Đi vào Build / New Build Definition hoặc Chỉnh sửa Build Definition -> Process -> Cấu hình để xây dựng, mở hộp thoại lựa chọn cấu hình và trong " vBulletin " thay vì chọn " Bất kỳ CPU ", tự thêm " AnyCPU "


6

Như đã nói, OutputPath phải được đặt VÀ nó phải được đặt trước <Import Project="$(WixTargetsPath)" /> trong tệp .wixproj


Cái này liên quan đến vấn đề của tôi, tôi đã thêm cấu hình mới cho một dự án wix sau khi tôi tạo nó và cấu hình mới đã được thêm vào cuối tệp để tất cả các Nhóm Thuộc tính liên quan đến cấu hình mới đó được đặt SAU lần nhập này, chuyển chúng đến trên cùng, ngay bên cạnh những cái khác, làm cho nó phù hợp với tôi.
Eugenio Miró

4

Tôi đã xóa Platformbiến môi trường (là BNB hoặc smth như vậy). Vấn đề đã biến mất.


1
Thật không may, ngay cả sau khi xóa biến môi trường Nền tảng, nó vẫn yêu cầu khởi động lại hoàn toàn!
79E09796

4

Tôi đã thêm nền tảng x64 vào giải pháp của mình hôm nay, khi tôi gặp sự cố này.

Trong trường hợp của tôi, lỗi đọc:

Đã xây dựng $ / ProjectDirectory / ProjectName.csproj cho các mục tiêu mặc định. c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (484): Thuộc tính OutputPath không được đặt cho dự án ProjectName.csproj '. Vui lòng kiểm tra để đảm bảo rằng bạn đã chỉ định sự kết hợp hợp lệ giữa Cấu hình và Nền tảng cho dự án này. Cấu hình = 'Gỡ lỗi' Platform = 'x64'. Bạn có thể thấy thông báo này bởi vì bạn đang cố gắng xây dựng một dự án mà không có tệp giải pháp và đã chỉ định một Cấu hình hoặc Nền tảng không mặc định không tồn tại cho dự án này.

Tôi biết nó OutputPathsẽ ổn thôi, vì đây là một giải pháp VS hiện có, đang hoạt động. Vì vậy, tôi đã chuyển sang gợi ý tiếp theo - "sự kết hợp hợp lệ giữa Cấu hình và Nền tảng".

Aha! Visual Studio đang cố gắng xây dựng Configuration='Debug', Platform='x64'. Nhìn vào tệp dự án của mình, tôi nhận ra rằng x64 không được liệt kê là một trong những nền tảng khả thi. Nói cách khác, tôi đã có các mục dưới đây (rút gọn):

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Debug\</OutputPath>  
      . . .  
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Release\</OutputPath>    
      . . .
  </PropertyGroup>

Sau đó, sửa chữa dễ dàng: chỉ cần thêm các mục x64!

Tôi sao chép / dán các mục x86 và thay đổi chúng để sử dụng x64. Lưu ý rằng tôi cũng đã sửa đổi các đường dẫn để chúng không ghi đè các bản dựng x86:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Debug\</OutputPath>    
      . . .
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Release\</OutputPath>    
      . . .
  </PropertyGroup>

3

Tôi đã cố gắng với điều này một lúc và sau đó cũng dỡ bỏ, xây dựng và sau đó tải lại dự án vi phạm trong giải pháp, và sau đó MSBuild hoạt động bình thường.


3

Là Scott S, tôi đã phải xóa biến môi trường "Nền tảng" .

Sau đó khởi động lại VS và không sao: không còn thông báo lỗi nữa ...


Điều này có hiệu quả với tôi khi tôi xóa nền tảng mà tôi đã chỉ định trong bước Xây dựng vNext MSBuild của mình.
4imble

2

Vấn đề liên quan đến cấu hình dự án của tôi. Đây là kịch bản:

Giải pháp A tham khảo:

Dự án X tham chiếu Dự án Y
Dự án Y

Giải pháp B (giải pháp tôi đang cố gắng xây dựng) tham chiếu:

Dự án X Dự án Z

Giải pháp của tôi là tạo cấu hình có cùng tên cho Giải pháp A, xây dựng lại nó và sau đó xây dựng lại Giải pháp B. Điều này đã khắc phục sự cố.


1
Tôi đã gặp phải lỗi tương tự và lần giải quyết này là cách duy nhất phù hợp với tôi. Về cơ bản, tôi đã có một cấu hình nền tảng giải pháp "Win32" xây dựng một dự án silverlight với cấu hình nền tảng "Bất kỳ CPU nào" và cũng là một dự án ứng dụng web với cấu hình nền tảng "x86" lưu trữ dự án silverlight. Tôi đã phải thêm cấu hình nền tảng dự án mới vào dự án silverlight, "x86" (và giữ cấu hình cũ làm cấu hình mặc định) để msbuild hoạt động như mong đợi.
Rami A.

2

Tôi đã có cùng một thông báo lỗi. Nguyên nhân là do có một tham chiếu đến một dự án đã được dỡ bỏ và không được trình liên kết yêu cầu (nếu không nó sẽ bị lỗi tại thời điểm biên dịch). Xóa tham chiếu vi phạm đã giải quyết được vấn đề.


2

Trong trường hợp của tôi (VS2010), tôi đã xóa chuỗi trong hộp "Đường dẫn đầu ra" trên tab "Xây dựng" và để trống. Sau đó, tôi xây dựng lại giải pháp. Quá trình xây dựng thành công và VS đã chèn thư mục hiện tại "./" vào "Đường dẫn đầu ra". Tôi đã thay thế thư mục hiện tại "./" bằng đường dẫn của mình ("bin \ x64 \ Release \" - đủ để nói rằng đây là đường dẫn thư mục chính xác mà VS đã phàn nàn ngay từ đầu) và xây dựng lại thành công.


1

Trong trường hợp của tôi, OutputPath đã được đặt thuộc tính trong các tệp dự án. Nhưng dỡ bỏ, tải lại và sau đó xây dựng lại đã sửa chữa nó.


1

Khi tôi thêm cấu hình giải pháp mới trong giải pháp của mình, tôi gặp lỗi "Thuộc tính OutputPath không được đặt cho dự án X. Vui lòng kiểm tra để đảm bảo rằng bạn đã chỉ định kết hợp hợp lệ giữa Cấu hình và Nền tảng cho dự án này. Cấu hình = 'QA 'Platform =' AnyCPU '. Lỗi này cũng có thể xuất hiện nếu một số dự án khác đang cố gắng theo dõi tham chiếu từ dự án này sang dự án khác cho dự án này, dự án này đã bị dỡ bỏ hoặc không được bao gồm trong giải pháp và dự án tham chiếu không xây dựng bằng cấu hình hoặc nền tảng tương tự hoặc tương đương. ProjectY ".

Trong trường hợp của tôi, vấn đề là do một phần được đánh dấu của mô tả lỗi. Dự án X một phần trong giải pháp của tôi có tham chiếu dự án đến ProjectY của một giải pháp khác (nhánh khác).

Tôi đã giải quyết vấn đề này bằng cách sửa đổi dự án X để sử dụng tham chiếu dự án tới ProjectY trong giải pháp hiện tại. Hy vọng điều này sẽ giúp ai đó có vấn đề tương tự.


0

Trong trường hợp của tôi, khối XML "PropertyGroup" mới được tạo ở cuối tài liệu. Tôi vừa thay thế nó sau các thẻ "PropertyGroup" khác và điều này đã giải quyết được sự cố.


0

Tôi đã tạo một dự án mới trong một giải pháp mới tham chiếu đến các dự án hiện có. Lỗi này xảy ra khi tôi thêm một dự án hiện có (chẳng hạn như dự án 1) và cố gắng xây dựng mà không thêm các dự án khác mà dự án 1 tham chiếu đến.

Chỉ cần đảm bảo rằng tất cả các dự án liên quan được thêm vào giải pháp mới và lỗi sẽ biến mất.


0

Tôi đã gặp lỗi tương tự, vì vậy tôi đã xem xét cài đặt dự án và trong phần "Xây dựng" là tùy chọn "Xây dựng đường dẫn đầu ra". Và giá trị trống. Vì vậy, tôi đã điền vào giá trị "bin \", một lỗi đã biến mất. Nó đã giải quyết vấn đề của tôi.


0

Nếu bạn quyết định đặt OutputPath làm tham số và đường dẫn của bạn giống như: bin\Release\\thì hãy nhớ thêm \vào cuối như thế: /p:OutputPath=bin\Release\\\\tôi đã mất một lúc để nhận ra đó là trường hợp


0

Tôi đã từng gặp vấn đề tương tự. Tôi đã sửa nó bằng cách dọn dẹp và xây dựng lại các dự án.


0

Tôi gặp vấn đề tương tự và giải pháp duy nhất hữu ích là đặt Cấu hình Xây dựng theo cách thủ công trong mỗi Dự án NCrunch.

Mở Cửa sổ NCrunch, nơi bạn có thể xem Trạng thái của từng Bản dựng và nơi bạn có thể thấy rằng bản dựng bị lỗi. Nhấp chuột phải vào dự án không thể xây dựng và nhấp vào "cấu hình thành phần đã chọn" ở đó bạn thấy trong "Cài đặt bản dựng" thuộc tính "Sử dụng cấu hình bản dựng" đặt nó thành "Gỡ lỗi" và thuộc tính "Sử dụng nền tảng xây dựng" đặt nó thành ví dụ: "AnyCPU". (Xin lưu ý rằng cài đặt xây dựng và cấu hình bạn đặt phải tồn tại trong Cài đặt konfigration của bạn)

Làm điều này cho tất cả các dự án của bạn, nhưng không cho dự án thử nghiệm của bạn. Sau đó, mọi thứ hoạt động tốt cho tôi.


0

Tôi đã gặp vấn đề tương tự, tôi đã sửa nó bằng cách thêm các Cấu hình bị thiếu vào dự án bị lỗi.

XÂY DỰNG -> Trình quản lý cấu hình ->

Trong Cột cấu hình Thêm

Lưu ý: Điều này chỉ xảy ra do tôi có cấu hình tùy chỉnh và các dự án mới được tạo không có cấu hình.


0

Nếu bất kỳ ai nhận được thông tin này trong nhật ký NCrunch của mình, hãy kiểm tra xem việc PropertyGroupxác định các giá trị 'Gỡ lỗi' / 'Phát hành' và 'AnyCPU' / 'x86' có nằm trước nhóm thuộc tính sử dụng các giá trị đó trong điều kiện của chúng hay không.

<PropertyGroup>
    <!-- this one first -->
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <XXX>...</XXX>
  </PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <XXX>...</XXX>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <XXX>...</XXX>
</PropertyGroup>

Đã làm cho tôi.


0

Trong trường hợp của tôi, tôi đã cố gắng di chuyển nhóm thuộc tính chứa cấu hình tùy chỉnh của tôi xuống dưới nhóm thuộc tính tiêu chuẩn. Nó đã giải quyết nó cho tôi.


0

Chỉ có điều này với VS2015 Professional:

Thuộc tính OutputPath không được đặt cho dự án 'xxxxx.csproj'. Vui lòng kiểm tra để đảm bảo rằng bạn đã chỉ định sự kết hợp hợp lệ giữa Cấu hình và Nền tảng cho dự án này.

Đây cũng là sự kết hợp nhiều dự án giữa gỡ lỗi / phát hành và các mục tiêu khác nhau. Tôi đã loay hoay với các cấu hình xây dựng tại một số thời điểm và tôi biết điều đó có thể làm rối tung VS, vì vậy tôi đã kéo chúng trở lại từ repo. Vẫn không ổn. OutputPath đã được thiết lập, không còn bất kỳ khác biệt nào với trạng thái tốt đã biết nên chắc chắn có điều gì đó sai với cài đặt cục bộ của tôi.

Mở trình cài đặt VS2015 và nhấp vào "Sửa chữa", và thì ... trở lại bình thường (ít nhất là cho đến nay!)

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.