Приложение.Net 4.0, ориентированное на профиль клиента, по-прежнему предлагает пользователю загрузить полный профиль
У меня есть приложение.NET Winform, которое предназначено для '.NET Framework 4 Client Profile', оно использует еще четыре сборки библиотеки классов, но все они также нацелены на профиль клиента.
Когда я тестирую это на ванильном Windows XP с установленным только клиентским профилем 4.0, я все еще получаю "Ошибка инициализации.NET Framework":
Чтобы запустить это приложение, сначала необходимо установить одну из следующих версий в.NET Framework:.NETFramework, Version=v4.0
Как я могу узнать, какая часть приложения все еще нуждается в компоненте полного фреймворка?
Я предполагал, что, установив целевую платформу на "профиль клиента", компилятор будет гарантировать, что я использую только компоненты профиля клиента.
1 ответ
Я снова просмотрел все сборки, чтобы убедиться, что все они нацелены на профиль клиента: да.
Затем я начал со свежего пустого приложения WinForms, которое запустилось в профиле клиента, как и ожидалось. Затем я добавил свои сборки, которые я использую в своем основном приложении, в это свежее приложение одну за другой. Даже после ссылки на них все свежее приложение продолжало работать.
Затем я посмотрел на app.config, в котором есть некоторые записи DbProviderFactories, но их удаление не помогло. Пока я увидел первый узел:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
хм, может быть, этот конкретный sku означает полную версию. И действительно, меняя его на
<startup>
<supportedRuntime version="v4.0" />
</startup>
решил все мои проблемы.