Невозможно применить свойства публикации для элемента X

91

Всякий раз, когда мы выполняем сборку в нашем основном решении, мы получаем следующее предупреждение:

Невозможно применить свойства публикации для элемента «microsoft.visualstudio.qualitytools.unittestframework».

Кто-нибудь видел что-нибудь подобное раньше? Любые идеи о том, как это исправить? Это происходит на всех наших машинах для разработчиков, а также на нашем сервере сборки TFS. Однако он появляется только в режиме отладки.

Джонатан Никсон
источник

Ответы:

168

Похоже, что проблема связана с ClickOnce. Перейдите к проекту, щелкните его правой кнопкой мыши и выберите свойства. Перейдите на вкладку «Опубликовать» и нажмите «Файлы приложения». Установите флажок «Показать все файлы» и прокрутите список файлов. В конце концов вы встретите файл с желтым восклицательным знаком. Этот файл потерян, и его необходимо удалить. Щелкните правой кнопкой мыши файл, и там должна быть опция удаления.

Теперь создайте решение, и предупреждение должно исчезнуть.

Джонатан Никсон
источник
14
Я дважды искал эту проблему в Google и нашел ответ. Со временем я узнаю. : p
Ник Спрейцер
4
Show all filesэто ключ здесь.
MEMark
5
@NickSpreitzer В третий раз для меня. На этот раз меня даже удивил собственный комментарий.
MEMark
Вы также можете обновить свой файл csproj, позаботившись о разделе «PublishFile». Конечно, это нужно делать очень осторожно.
Джером
3

Ответ, получивший наибольшее количество голосов, идеален в своем нынешнем виде, но те из нас, кто имеет дело с более крупными вспышками, могут извлечь выгоду из этого альтернативного ответа. В нем описывается аналогичное исправление на уровне файлов.

Предупреждение вызвано таким элементом:

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

... в файле проекта (.csproj) выдаёт предупреждение. Обратите внимание на PublishState «Exclude»; этот элемент говорит: «Пожалуйста, не публикуйте воображаемую DLL»; очевидно, что это ненужная инструкция, если во время публикации где-либо поблизости нет такой DLL, но она также вызывает предупреждение, поскольку процесс публикации не может оценить идентичность файла.

Вы можете удалить весь PublishFileэлемент для каждого элемента развертывания, упомянутого в предупреждениях, если он имеет PublishState «Exclude». Не удаляйте механически каждый элемент с помощью PublishState «Exclude», потому что, если об этом не было предупреждений, файл, вероятно, доступен во время публикации и может быть опубликован - что будет нежелательным изменением продукта, если вы только захотите избавьтесь от предупреждения.

Йирка Ханика
источник