#c# #visual-studio #visual-studio-extensions #vsix #target-framework
#c# #visual-studio #visual-studio-extensions #vsix #цель-фреймворк
Вопрос:
При создании шаблона для VSIX мы можем разрешить пользователю выбирать .Версия Net framework Вот как это делается:
<TargetFrameworkVersion>v$targetframeworkversion$</TargetFrameworkVersion>
Теперь, с выпуском новой версии Visual Studio (16.8), это позволяет пользователю также выбирать версию .NET Core.
Но этот код, похоже, не работает в проекте шаблона .NET Core и показывает разные числа вместо значений netcoreapp3.1 или net50-windows.
также .net core использует <TargetFramework>
вместо <TargetFrameworkVersion>
so Какой правильный параметр?
Я тестировал эти:
1. результат = 4.5
<TargetFrameworkVersion>$targetframeworkversion$</TargetFrameworkVersion>
2. результат = $ targetframework $
<TargetFramework>$targetframework$</TargetFramework>
3. результат = 4.5
<TargetFramework>$targetframeworkversion$</TargetFramework>
Ответ №1:
Я думаю, что вы пока не можете создать такой шаблон проекта vsix для Net Core.
Я думаю, что вы создали проект project template для реализации ваших требований.
И вы должны отметить, что в этом шаблоне проекта используется старый формат sdk, а не новый формат sdk (Net Core). Кроме того, то, что он передает и выводит, всегда является основой Net Framework
.
Поэтому, как бы вы ни меняли его proj
форму на основе этого шаблона, он всегда будет net framework. Вы можете увидеть этот интерфейс, это пользовательский шаблон, созданный мной, я изменю его для использования
<Project Sdk="Microsoft.NET.Sdk">
....
<TargetFramework>$targetframeworkversion$</TargetFramework>
.....
</Project>
И я также выгружаю шаблон проекта propject —> отредактируйте xxx.csproj
файл, измените, чтобы использовать эти:
<Project Sdk="Microsoft.NET.Sdk">
....
<TargetFramework>netcoreapp3.1</TargetFramework>
.....
</Project>
Создайте шаблон проекта и поместите его в C:UsersxxxDocumentsVisual Studio 2019TemplatesProjectTemplates
.
Перезапустите VS, а затем используйте этот шаблон, вы можете увидеть это:
Он всегда нацелен на net frameowrk
. И это доказывает, что модифицированный фреймворк управляется внутренними параметрами самого проекта project template, и мы не можем изменить этот внутренний параметр.
В деталях, $targetframeworkversion$
это параметр из самого шаблона проекта, и поскольку шаблон проекта выпущен Microsoft с net framework
, поэтому параметр всегда net framework
и другое неконтролируемое поведение также может привести к повреждению проекта шаблона. Таким образом, мы не можем получить Net Core
с этим.
Предложение
В качестве предложения вам следует связаться с командой Microsoft на форуме DC или github, чтобы выпустить новый проект project template project с новым форматом sdk (формат Net Core).