Поделиться через


Предупреждение компилятора (уровень 1) CS1699

Обновлен: Ноябрь 2007

Сообщение об ошибке

Вместо "имя_атрибута" используйте параметр командной строки "параметр_компилятора" или подходящие параметры проекта
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

Для того чтобы подписать сборку, необходимо указать файл ключа. В версиях, предшествовавших Microsoft Visual C# 2005, файл ключа указывался с помощью атрибутов среды CLR в исходном коде. Данные атрибуты теперь считаются устаревшими.

Начиная с версии Microsoft Visual C# 2005 для указания файла ключа следует использовать страницу Подписываниеконструктора проектов или компоновщик сборок.

Более предпочтительно использовать страницу Подписываниеконструктора проектов; дополнительные сведения см. в разделах Страница "Подписывание" в конструкторе проектов и Управление сборками и подписывание манифестов.

В разделе Практическое руководство. Подписание сборки строгим именем описано использование следующих параметров компилятора.

Данные атрибуты устарели по указанным ниже причинам.

  • В результате внедрения атрибутов в двоичные файлы, создаваемые компилятором, возникали проблемы безопасности. Получив двоичный файл, можно было просмотреть содержащиеся в нем ключи.

  • Возникали проблемы удобства работы, поскольку пути указывались в атрибутах относительно текущего рабочего каталога, который мог измениться в интегрированной среде разработки, или выходного каталога. Таким образом, в большинстве случает файл ключа указывался в следующем виде: ..\\..\\mykey.snk. Атрибуты также затрудняли процесс подписи системой проекта вспомогательных сборок. Если вместо атрибутов используются параметры компилятора, можно указывать полный путь и имя файла для ключа, не внедряя данные в выходной файл; система проекта и система управления версиями могут корректно управлять указанным полным путем при перемещении проектов; система проекта может поддерживать путь к файлу ключа относительно структуры каталогов проекта, а компилятору передавать полный путь; другим программам построения стало проще подписывать выходные файлы посредством передачи соответствующего пути непосредственно компилятору вместо того, чтобы создавать файл исходного кода с правильными атрибутами.

  • Использование атрибутов с дружественными сборками может привести с снижению производительности компилятора. Если используются атрибуты, то при принятии решения о предоставлении статуса дружественной сборки компилятору приходится строить предположения, поскольку ему не известен ключ. После завершения компиляции, когда ключа уже известен, компилятор может проверить свое предположение. Если ключ указывается с помощью параметра, компилятор может немедленно принять решение, следует ли предоставлять статус дружественной сборки.

Пример

Этот пример приводит к возникновению ошибки CS1699. Для устранения этой ошибки удалите атрибут и выполните компиляцию с параметром /delaysign.

// CS1699.cs
// compile with: /target:library
[assembly:System.Reflection.AssemblyDelaySign(true)]   // CS1699

См. также

Задачи

Практическое руководство. Подписание сборки строгим именем

Ссылки

Страница "Подписывание" в конструкторе проектов

Другие ресурсы

Управление сборками и подписывание манифестов