Страницы

Поиск по вопросам

вторник, 5 февраля 2019 г.

Как убрать предупреждение “Сборка My.dll неверно указана как файл”?

Библиотеки подключаемые не через NuGet, сложили в папку dll в каталоге проекта. Добавили ссылки на них, всё работает, но при построении в Visual Studio в Списке ошибок выдаётся предупреждение
Сборка "dll\My.dll" неверно указана как файл.
Что от меня хочет MsBuild и как избавиться от предупреждения?

фрагменты .csproj:
dll\My.dll ... ...


Ответ


Эта строчка говорит о том, что этому файлу в свойстве Build Action указано Content. Описание ошибки в MSDN никак не связано с значением BuildAction=Content которое я нашел в этом ответе
Описание ошибки
MSB3178: Assembly '' is incorrectly specified as a file. This warning is generated during application manifest generation when the build process detects that a file reference is actually a (managed or native) assembly.
Это предупреждение выдается если в процессе сборки обнаружена ссылка на файл который на самом деле является управляемой сборкой или нативной библиотекой.
Описание значения Build Action=Content
Content: Allows you to retrieve a file (in the same directory as the assembly) as a stream via Application.GetContentStream(URI). For this method to work, it needs a AssemblyAssociatedContentFile custom attribute which Visual Studio graciously adds when you mark a file as "Content"
Добавляет возможность получить содержимое файла в виде потока с помощью метода Application.GetContentStream(URI). Файл должен быть помещен в той же папке что и текущая сборка.

Тем не менее, здесь можно найти ответ, который рекомендует для решения аналогичной проблемы изменить Build Action на None. Это не принятый ответ, но у него самое большое количество плюсов.
Я не сумел воспроизвести аналогичную ошибку и проверить ответ. Но нашел подтвержение ему в этом блоге
This time I tried something else, this time I set the build action to none and copy if newer for each of the dll’s generating this warning. It seems to have gotten rid of the warnings plus the program still compiles and runs (with complete directory clean).
На этот раз я попробовал кое-что еще. Я установил build action в none и задал опцию copy if newer для каждой dll, которая выдавала это предупреждение.
Кажется, это помогло избавиться от предупреждений, плюс программу можно было скомпилировать и запустить.

Поэтому я советую попробовать установить свойство Build Action=None. Скорее всего это поможет решить проблему.
Так как у меня нет локализованного интерфейса студии, прикладываю скриншот, на тот случай если будущим читателям будет необходима подсказка - как найти это свойство в студии. Нужно выделить файл в Solution Explorer (Обозреватель решений), и тогда его свойства станут доступны в этом окне.

Комментариев нет:

Отправить комментарий