Не удалось переписать кодовые контракты - порядок libpath - PullRequest
5 голосов
/ 11 ноября 2010

Мое решение / Проект прекрасно работает с отключенными контрактами кода для этого конкретного проекта.

Когда я включаю Выполнить проверку контракта во время выполнения в моем проекте, сборка завершается неудачно. Переписывающее устройство CC начинает выводить сотни сообщений в следующем виде:

Could not resolve member reference: ....

Кажется, эта проблема вызвана порядком ссылок на проекты, передаваемых ccrewrite через аргумент libpaths. Когда я разбираю сборку и запускаю ее в командной строке, и вручную указываю ссылки в определенном порядке на libpaths, ccrewrite работает, и сборка завершается.

например

ccrewrite /level:4 /rewrite "/assemblyMode=standard" /throwonfailure /libpaths:"X Y Z" "target.dll" -- fails :(

ccrewrite /level:4 /rewrite "/assemblyMode=standard" /throwonfailure /libpaths:"Z Y X" "target.dll" -- compiles/rewrites :)

Это немного странно для меня, я бы подумал, что ccrewrite должен быть в состоянии обработать произвольный порядок, тем более что предоставленный «сломанный» порядок - это то, что msbuild передает в файл Microsoft.CodeContracts.targets / ccrewrite, но это проблема для ребят из CC. Я также проверил это на 3 разных машинах, с тем же результатом, так что это либо проблема ccrewrite, либо что-то странное в этом конкретном csproj, что ccrewrite не нравится.

Что мне интересно, так это то, могу ли я обеспечить конкретное упорядочение моих ссылочных проектов, которые передаются по цепочке в файл целей CC? Я бы предположил, что механизм сборки будет использовать порядок, который он читает в файле csproj проекта, в элементах ItemGroup//ProjectReference, но это не так.

Есть идеи?

1 Ответ

1 голос
/ 06 декабря 2010

Это была определенная ошибка в инструменте, и она была устранена в последней версии, v1.4.31130.0 2010-11-30.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...