Проблема зависимости с MSBUILD 4.0 при выполнении DLLIMPORT от C # в неуправляемую библиотеку C ++

StackOverflow https://stackoverflow.com/questions/3048577

Вопрос

Явно установленная зависимость в VS2010 между неуправляемым проектом C ++ и C # проектом C # добивается в VS2010, но зависимость игнорируется в MSBUILD 4.0.

Невозможно добавить ссылку на неуправляемый проект C ++ из проекта C #, AFAIK.

Как я могу обеспечить правильный заказ на сборку, если решение содержит неуправляемые и управляемые проекты?

Это было полезно?

Решение

MSBUILD имеет ошибку в нем и не правильно почитает зависимости проекта на уровне решения. Взгляни на http://social.msdn.microsoft.com/forums/en-us/msbuild/thrad/80cc6447-b720-4806-8395-7C257B207613/ и https://connect.microsoft.com/visualstudio/feedback/details/613284/details/613284/MSBUILD-4-DoS-NOT-RESPECT-BUILD-OULD-COVECHEN-S

Публикация Microsoft на странице Connect Connect указывает, что его ошибка в 64-битной версии MSBuild. Попробуйте переключиться на 32-битную версию, чтобы увидеть, что это решает проблему.

Если вы не можете этого сделать, или это не работает, есть два других варианта. Ни один из них не идеален.

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

Второй вариант будет вручную экспортировать MSBUILD «MetaProject» для решения и отредактировать заказ на сборку напрямую и добавить любые другие настройки, которые вам нужны. Из того, что я прочитал, даже в Microsoft они не «Dogfood» компиляции решения - вместо этого они полностью избегают их во время сборки и вместо этого используют пользовательские файлы MSBuild.

Чтобы генерировать метапророй, установите переменную среды MSBUILDEMITSOLICT до 1. После запуска MSBUILD на решении, и вы должны увидеть файл «. Wetaproj» в том же каталоге - он содержит сценарий, который MSBUILD генерирует в памяти для компиляции решения. Вы должны быть в состоянии сделать необходимые изменения, проверяйте его, затем установите сервер сборки для его компиляции.

Вопрос исчезнет в следующем выпуске Visual Studio. Страница Microsoft Connect Connect имеет размещение от Microsoft, которую он будет зафиксирован в следующем выпуске, и слухи оказывают, что они избавляются от файлов .sln и заменяют их надлежащими проектами MSBuild.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top