У меня проблемы с отображением пользовательских (унаследованных) элементов управления в моем проекте Windows Mobile для .NETCF в Visual Studio. Элемент управления отображается на поверхности конструктора в виде серого прямоугольника с записанным в нем именем класса.
В качестве контрольного примера у меня есть простой элемент управления, определяемый как:
public class ucButton2 : Button
{
}
Должно быть похоже на кнопку, но это дает забавное поведение.
В прошлом я решал эту проблему или подобные проблемы с файлом атрибутов времени разработки. Поэтому я включил файл DTA.xmta со следующим содержимым
<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
<Class Name="MyProject.CustomControls.ucButton2">
<Description>Testbutton</Description>
<DesktopCompatible>true</DesktopCompatible>
</Class>
</Classes>
Теперь все становится по-настоящему странным - я начинаю получать ошибки компиляции из genasm.exe в несвязанных файлах типизированных данных.
Следуя советам из последнего комментария к этому сообщению:
http://www.simonrhart.com/2008/02/upgrading-your-solutions-to-visual.html
Я изменил DTA.xmta, чтобы иметь действие сборки "Embedded Resource"
Теперь приложение компилируется, но ничего не изменилось - на поверхности конструктора все еще отображается пустое поле с именем класса.
Я закрыл и снова открыл Visual Studio, чтобы убедиться, что странного кэширования не происходит - такое же поведение.
Как я уже говорил, в прошлом файл xmta решал такую проблему. Но не в этот раз. Но в то же время в прошлом добавление файла xmta не вызывало genasm.exe для barf во время компиляции. В моем другом проекте мой xmta-файл имеет действие сборки none, а не встроенного ресурса.
Во время выполнения все работает нормально. Это чисто проблема времени проектирования. Любая помощь будет высоко ценится.