Изучив, как Blend 4 создает проекты / решения Visual Studio, я выяснил, почему копия Blend нашего графического дизайнера не работала должным образом, и решил проблему. Виноваты были множественные конфигурации сборки, которые мы настроили. Вот особенности того, что я обнаружил, и список предупреждений для всех, кто использует несколько конфигураций сборки, Blend 4 и Visual Studio 2010.
Предупреждение 1: Blend не позволяет выбрать конфигурацию сборки.
В Visual Studio при сборке вы всегда строите с определенной конфигурацией сборки. Этот параметр можно изменить. Blend, похоже, не имеет возможности изменять настройки конфигурации сборки в любом месте своего пользовательского интерфейса. Вместо этого он использует собственную эвристику для выбора используемой конфигурации сборки.
Предупреждение 2: Blend не использует ту же логику для выбора конфигурации сборки при сборке, как при проектировании.
Это то, что вызывало у нас проблемы. Кажется, что у Blend есть два разных способа выбора конфигурации сборки. При компиляции он использует логику в файлах .csproj для выбора конфигурации сборки по умолчанию (см. Предупреждение 3). Однако проектировщик ищет файл решения, для которого выходной каталог конфигурации сборки следует использовать для разрешения ссылок на сборки (см. Предупреждение 4). Таким образом, хотя Blend компилировалась нормально, дизайнер смотрел не на скомпилированные файлы, а на пустой каталог bin, который он создал.
Предупреждение 3: Blend и Visual Studio не обрабатывают конфигурации сборки по умолчанию одинаково.
В верхней части файлов .csproj есть группа свойств, которая указывает, какую конфигурацию сборки использовать, если она не указана при запуске csc.exe. Visual Studio, похоже, не изменяет эти данные, вероятно, потому, что в этом нет необходимости, поскольку всегда использует определенную конфигурацию сборки. Мы удалили конфигурации Debug и Release по умолчанию и создали свои собственные конфигурации DebugWindows, ReleaseWindows, DebugMac и ReleaseMac, но в файлах проекта все еще было указано, что они используют «Debug», когда конфигурация не указана. Blend 4 запускает csc.exe без конфигурации сборки, поэтому используется логика по умолчанию. Поэтому мне пришлось вручную исправить файлы .csproj.
Предупреждение 4. Visual Studio не позволяет заказывать конфигурации сборки вашего решения, и порядок относится к Blend.
Вопреки тому, как Blend выбирает конфигурации сборки при компиляции, кажется, что дизайнер Blend использует первую конфигурацию решения в файле решения, чтобы связать проекты с конфигурацией сборки. Затем дизайнер ищет выходной каталог для , который конфигурация для своих сборок. Другими словами, если есть несоответствие между настройками конфигурации сборки .csproj и настройками конфигурации первого решения, дизайнер не увидит ваши классы, словари объединенных ресурсов и т. Д., Даже если вы создали проект.
Какая бы конфигурация решения ни была первой, ее нельзя изменить с помощью Visual Studio. Чтобы исправить то, где дизайнер искал артефакты сборки, нам пришлось вручную переупорядочить конфигурации решения в файле .sln.