Не могу собрать UserControls под x64 - PullRequest
2 голосов
/ 30 марта 2012

Я пытаюсь устранить неполадки в проекте VB.NET, который содержит элементы UserControls (на самом деле, некоторые из них отображают те же проблемы). Я пытаюсь заставить их строить под x64, но это невозможно. В x86 или AnyCPU, UserControl создается и отображается на панели инструментов, поэтому я могу добавить или изменить его в формах, которые этого требуют. В x64 элементы управления исчезают из панели инструментов, я получаю предупреждения во время сборки (хотя сборка текущего проекта), я не вижу ни одной из форм - я получаю ошибки (см. Ниже) - и проекты, которым требуется проект с Форма как импорт не будет строить. Когда я изучал, что такое эти пользовательские элементы управления, чтобы я мог восстановить их с нуля, я скачал код из книги - отличный инструмент обучения, но я получаю те же ошибки:

Could not find type 'Chap15SampleCode.ListSelector'.  Please make sure that the assembly that contains this type is referenced.  If this type is a part of your development project, make sure that the project has been successfully built using settings for your current platform or Any CPU.

The variable 'ListSelector1' is either undeclared or was never assigned.

Я также получаю предупреждения, не знаю, что с ними делать:

Possible problem detected while building assembly 'Chap15SampleCode': Referenced assembly 'mscorlib.dll' targets a different processor
Possible problem detected while building assembly 'Chap15SampleCode': Referenced assembly 'System.Data.dll' targets a different processor

Я проверил и обнаружил, что System.Data в качестве ссылки находится в c: \ Windows \ Microsoft.NET \ Framework ... (если я изменю целевую платформу на 4.0, ссылка будет в c: \ ProgramFiles (x86) .. ... это было то, что было в моих проектах ... и я пытался изменить его из-за x86, я не смог, у меня было несколько других в ProgramFiles (x86), и я подумал, что это может быть проблемой?)
Переустановил VS2010, переустановил Windows - сделал то же самое до того - но у меня действительно чистая система, поэтому я не могу винить в этом.
Если я смогу заставить этот простой проект работать, я надеюсь, что реальные проекты будут легкими - Пожалуйста, помогите мне понять, о чем идет речь. Спасибо.

1 Ответ

7 голосов
/ 30 марта 2012

Вы изменили настройку цели платформы в проекте на x64.Это не подходит для любого проекта, который производит DLL.Фактическая разрядность процесса, который использует вашу DLL, определяется EXE-файлом, который запускает процесс.Или хост, на котором работает ваша DLL, случай для Visual Studio, который является 32-битным процессом.DLL ничего не может сделать, чтобы вызвать разрядность, она может только отказаться загружаться.Именно это и происходит.

Измените настройку обратно на AnyCPU, чтобы ваш UserControl работал правильно в любом процессе, независимо от его разрядности.В том числе дизайнер VS.Проект + Свойства, вкладка "Сборка".Для VB.NET он находится на вкладке «Компиляция», кнопка «Дополнительные параметры компиляции».

...