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

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

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

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

1 ответ

Решение

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

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

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

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

<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", потому что, если об этом не было предупреждений, файл, вероятно, доступен во время публикации и может быть опубликован, что будет нежелательным изменением продукта, если вы только захотите избавьтесь от предупреждения.

Другие вопросы по тегам