#c# #wpf #visual-studio
#c# #wpf #visual-studio
Вопрос:
Теперь я обновился до Visual Studio 16.8, и при этом мое существующее (большое) решение не может создавать какие-либо проекты WPF. Повсюду сообщения об ошибках, такие как следующие:
10>C:...srcUserInterfaceDataWriterMonitorApp.xaml.cs(5,25,5,28): error CS1558: "App" hat keine passende statische Main-Methode.
10>C:...UserInterfaceDataWriterMonitorApp.xaml.cs(9,4,9,23): error CS0103: Der Name "InitializeComponent" ist im aktuellen Kontext nicht vorhanden.
Очевидно, что не удается выполнить предварительную обработку файлов xaml. Когда я меняю заголовок csproj проекта-нарушителя с <Project Sdk="Microsoft.NET.Sdk">
на <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
, я получаю:
10>C:Program Filesdotnetsdk5.0.100SdksMicrosoft.NET.Sdk.WindowsDesktoptargetsMicrosoft.WinFX.targets(240,9): error MC1000: Unbekannter Buildfehler, "Could not find assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Either explicitly load this assembly using a method such as LoadFromAssemblyPath() or use a MetadataAssemblyResolver that returns a valid assembly."
Это даже происходит, если я удаляю все прямые ссылки из проекта.
Различные другие подходы (включая установку sdk на 4.8 в global.json) генерировали разные сообщения об ошибках, но тоже не работали.
Как я могу сделать так, чтобы сборка не использовала SDK 5.0?Мне нужно, чтобы он был установлен для других проектов, но здесь я просто хочу, чтобы мое решение строилось, как и раньше, с .NET Framework 4.8.
Примечание: я попробовал пример приложения .NET 4.8 WPF. Эта сборка выполняется, но в ней используется старый формат файла проекта. Если я изменю его на новый формат, у меня возникнут аналогичные проблемы. После некоторой возни это теперь работает, возможно, потому, что в противном случае этот пустой проект вообще не имеет ссылок.
Комментарии:
1. Вы можете установить версию SDK в
global.json
2. @canton: Я пробовал это. Что нужно для этого сделать? Мой глобальный файл .json гласит:
{ "sdk": { "version": "4.8" } }
3. Какую версию SDK вы использовали ранее? Вы, конечно, нацеливались на .NET Framework 4.8, но это не та версия SDK, которую вы использовали для сборки. Пакеты SDK перечислены здесь в разделе «.NET Core»
4. @LexLi: По-видимому, это возможно. Мы уже давно используем проекты в стиле SDK. И только сейчас мне удалось создать образец проекта WPFApp с проектом в стиле SDK.
5. К сожалению, я не думаю, что мы можем предложить гораздо больше без повторения. Если вы нацеливаетесь на фреймворк из проекта в стиле SDK, рассмотрите возможность использования MSBuild.SDK.Extras, это устраняет множество проблем, которые в противном случае возникают
Ответ №1:
Очевидно, я сделал слишком много вещей одновременно. Использование global.json
с
{
"sdk": {
"version": "3.1.101"
}
}
и никакие другие изменения (особенно без изменений <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
) не исправили сборку.
Комментарии:
1.Подождите, вы сказали, что изменили его на
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
. Вы действительно изменили его из значения?2. Сначала я изменил его на это значение, но мне пришлось отменить это, чтобы изменение global.json работало должным образом (или я все равно получил бы систему. Ошибка веб-сборки не найдена)
Ответ №2:
Я удалил <usewpf>true</usewpf>
из своих проектов
Комментарии:
1. Это работает, только если проекты фактически не используют WPF. У меня есть.