Không thể áp dụng các thuộc tính xuất bản cho mục X


90

Bất cứ khi nào chúng tôi xây dựng giải pháp chính của mình, chúng tôi sẽ nhận được cảnh báo sau:

Không thể áp dụng thuộc tính xuất bản cho mục "microsoft.visualstudio.qualitytools.unittestframework".

Có ai nhìn thấy bất cứ điều gì như thế này trước đây? có ý tưởng nào để sửa cái này không? Nó xảy ra trên tất cả các máy nhà phát triển của chúng tôi và cả trên máy chủ xây dựng TFS của chúng tôi. Tuy nhiên, nó chỉ xuất hiện trong chế độ Gỡ lỗi.

Câu trả lời:


165

Có vẻ như sự cố liên quan đến ClickOnce. Điều hướng đến dự án, nhấp chuột phải vào dự án và nhấp vào thuộc tính. Chuyển đến tab Xuất bản và nhấp vào Tệp ứng dụng. Chọn hộp kiểm 'Hiển thị tất cả các tệp' và cuộn qua danh sách các tệp. Cuối cùng, bạn sẽ bắt gặp tệp có dấu chấm than màu vàng trên đó. Tệp này không có sẵn và cần được xóa. Nhấp chuột phải vào tệp và sẽ có tùy chọn loại bỏ.

Bây giờ xây dựng giải pháp và cảnh báo sẽ biến mất.


14
Đó là hai lần tôi đã truy cập vấn đề đó và tìm thấy câu trả lời này. Cuối cùng thì tôi sẽ học. : p
Nick Spreitzer

4
Show all fileslà chìa khóa ở đây.
MEMark

5
@NickSpreitzer Lần thứ ba cho tôi. Lần này tôi thậm chí còn ngạc nhiên với nhận xét của chính mình.
MEMark

Bạn cũng có thể cập nhật tệp csproj của mình trong phần 'PublishFile'. Tất nhiên điều này phải được thực hiện rất cẩn thận.
Jerome

3

Câu trả lời được bình chọn hàng đầu là hoàn hảo như hiện tại, nhưng những người trong chúng ta đang xử lý các khoản chi lớn hơn có thể được hưởng lợi từ câu trả lời thay thế này. Nó mô tả một bản sửa lỗi tương tự ở cấp độ tệp.

Cảnh báo được gây ra bởi một phần tử như sau:

<PublishFile Include="THIS IS USUALLY SOME IMAGINARY DLL">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Exclude</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>

... trong tệp dự án (.csproj) phát ra cảnh báo. Lưu ý "Loại trừ" PublishState; phần tử này cho biết "vui lòng không xuất bản DLL tưởng tượng"; Đây rõ ràng là một hướng dẫn không cần thiết nếu không có DLL như vậy ở bất kỳ đâu vào thời điểm xuất bản, nhưng sau đó nó cũng gây ra cảnh báo vì quá trình xuất bản không thể đánh giá danh tính của tệp.

Bạn có thể xóa toàn bộ PublishFilephần tử cho từng mục triển khai được đề cập trong cảnh báo, miễn là phần tử đó có "Loại trừ" PublishState. Không xóa mọi phần tử bằng "Loại trừ" của PublishState một cách máy móc, bởi vì nếu không có cảnh báo về nó, tệp có thể có sẵn tại thời điểm xuất bản và cuối cùng nó có thể được xuất bản - đây sẽ là một thay đổi sản phẩm không mong muốn miễn là bạn chỉ muốn thoát khỏi cảnh bá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.