Fody ищет промежуточные файлы не в том каталоге

Чтобы иметь возможность опубликовать один файл .exe, я добавил пакет Costura/Fody в свой проект C#. Я использовал этот пакет раньше, но теперь получаю следующее сообщение об ошибке:

MSBUILD: ошибка: Fody: AssemblyPath "C:\Projects\X\MSBuild\obj\x86\Debug\X.exe" не существует. Если вы не выполнили сборку, вы можете игнорировать эту ошибку. Закончил Фоди 4 мс.

Странно то, что посредник X.exe здесь корректно собран:

C:\Projects\X\src\X\obj\x86\Debug\X.exe

Проект, над которым я работаю, довольно большой. Поэтому мы используем пару файлов реквизита MSBuild, чтобы поместить все в правильные выходные каталоги. И сборка из командной строки с помощью MSBuild, и сборка из Visual Studio работают корректно. Поэтому я предполагаю, что наши файлы реквизита верны. Почему Фоди ищет посредников в таком странном месте?

какая переменная MSBuild, которую может использовать Фуди, управляет этим промежуточным путем?


person Roy T.    schedule 31.03.2016    source источник
comment
Права доступа к папке или файлу?   -  person Siderite Zackwehdex    schedule 31.03.2016
comment
Я не думаю, что это так. MSBuild имеет доступ ко всем этим файлам и папкам (она их создала), а Fody — это всего лишь компонент, исполняемый MSBuild.   -  person Roy T.    schedule 31.03.2016


Ответы (1)


Глядя на код, вызывающий исключение, я вижу очень простая проверка File.Exists. Все это происходит из ProjectDirectory (в WeavingTask), и вы можете проверить места, где используется значение здесь.

Поскольку я не использовал Fody, я не могу сказать вам больше, чем это. Я бы уделил особое внимание файлам конфигурации, поскольку я не вижу, чтобы ProjectDirectory где-либо создавался, просто откуда-то вводился.

person Siderite Zackwehdex    schedule 31.03.2016
comment
Благодарю вас! Мне не пришло в голову посмотреть исходный код. Каким-то образом Фоди использовал очень странный каталог obj. Я исправил это, изменив наш скрипт сборки, чтобы каталог obj стал чем-то вменяемым. - person Roy T.; 31.03.2016