Поддержка интерактивного окна для нескольких сред выполнения .NET Core в шаблоне vsix

#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).