Странное поведение с Microsoft.Windowsce в.Формы
У меня есть приложение Windows Mobile, в котором я хочу проверить ориентацию устройства. Поэтому я написал следующее свойство в одной из моих форм:
internal static Microsoft.WindowsCE.Forms.ScreenOrientation DeviceOriginalOrientation { get; private set; }
странно то, что после этого всякий раз, когда я открываю UserControl, конструктор показывает это предупреждение, даже если этот UserControl не использует свойство:
не удалось загрузить файл или сборку 'Microsoft.Windowsce в.Формы, версия=3.5.0.0, культура=нейтральный, PublicKeyToken=969db8053d3322ac ' или один из свои зависимости. Определение манифеста сборки расположены не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
комментируя вышеуказанное свойство отклонит предупреждение и снова покажет пользовательский элемент управления. Приложение создано и успешно работает без каких-либо проблем в обоих случаях.
кто-нибудь знает, почему это происходит и как я могу это исправить?
3 ответов
эта проблема стоила мне пары часов. Я решил это, добавив Microsoft.Windowsce в.Формы.dll в GAC с помощью gacutil. Надеюсь, это поможет. Робин!--1-->
Да, это в значительной степени ожидалось. Поскольку это статическое свойство (с которым я бы не согласился в первую очередь), дизайнер должен инициализировать его, что означает загрузку Microsoft.Windowsce в.Бланки, что означает загрузочные устройства-конкретные точки входа. По общему признанию, сообщение об ошибке отстой, но тогда поддержка конструктора для устройства имеет много интересных вопросов которые трудно угадать причины.
Я бы попытался переместить его в другой класс или обернуть его чеком чтобы посмотреть, в модельере ли ты. Что-то вроде этого работает для нас:
protected bool IsDesignTime
{
get
{
// Determine if this instance is running against .NET Framework
// by using the MSCoreLib PublicKeyToken
System.Reflection.Assembly mscorlibAssembly = typeof(int).Assembly;
if ((mscorlibAssembly != null))
{
if (mscorlibAssembly.FullName.ToUpper().EndsWith("B77A5C561934E089"))
{
return true;
}
}
return false;
}
}
Если вы копируете Microsoft.Windowsce в.Формы.dll в подпапку в вашем проекте, например, а затем добавьте следующее к событиям предварительной сборки вашего проекта, он также будет работать нормально, если вы, например. переустановите компьютер:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /i "$(ProjectDir)SubFolder\Microsoft.WindowsCE.Forms.dll"