Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add -aot parameter to the console template #31739

Merged
merged 4 commits into from
Apr 20, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ Template options:
--use-program-main Whether to generate an explicit Program class and Main method instead of top-level statements.
Type: bool
Default: false
-aot, --publish-native-aot Whether to enable the project for publishing as native AOT.
Type: bool
Default: false

To see help for other template languages (F#, VB), use --language option:
dotnet new console -h --language F#
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ Template options:
--use-program-main Whether to generate an explicit Program class and Main method instead of top-level statements.
Type: bool
Default: false
-aot, --publish-native-aot Whether to enable the project for publishing as native AOT.
Type: bool
Default: false

To see help for other template languages (F#, VB), use --language option:
dotnet new console -h --language F#
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
"UseProgramMain": {
"longName": "use-program-main",
"shortName": ""
},
"NativeAot": {
"longName": "publish-native-aot",
"shortName": "aot"
}
},
"usageExamples": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
"isVisible": true,
"PersistenceScope": "Shared",
"PersistenceScopeName": "Microsoft"
},
{
"id": "NativeAot",
"isVisible": true
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Přeskočit obnovení",
"symbols/UseProgramMain/description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main.",
"symbols/UseProgramMain/displayName": "Nepoužívat _příkazy nejvyšší úrovně",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Obnoví balíčky NuGet vyžadované tímto projektem.",
"postActions/restore/manualInstructions/default/text": "Spustit dotnet restore",
"postActions/open-file/description": "Otevře Program.cs v editoru."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Wiederherstellung überspringen",
"symbols/UseProgramMain/description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll.",
"symbols/UseProgramMain/displayName": "Keine Anweisungen _der obersten Ebene verwenden",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "„NuGet-Pakete“ wiederherstellen, die für dieses Projekt erforderlich sind.",
"postActions/restore/manualInstructions/default/text": "„dotnet restore“ ausführen",
"postActions/open-file/description": "Öffnet „Program.cs“ im Editor."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
"symbols/UseProgramMain/description": "Whether to generate an explicit Program class and Main method instead of top-level statements.",
"symbols/UseProgramMain/displayName": "Do not use _top-level statements",
"_symbols/UseProgramMain/displayName.comment": "Use '_' as accelerator key when translating.",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"_symbols/NativeAot/displayName.comment": "Use '_' as accelerator key when translating.",
"postActions/restore/description": "Restore NuGet packages required by this project.",
"postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'",
"postActions/open-file/description": "Opens Program.cs in the editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Omitir restauración",
"symbols/UseProgramMain/description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior.",
"symbols/UseProgramMain/displayName": "No usar instrucciones de _nivel superior",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Restaure los paquetes NuGet necesarios para este proyecto.",
"postActions/restore/manualInstructions/default/text": "Ejecutar \"dotnet restore\"",
"postActions/open-file/description": "Abre Program.cs en el editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Ignorer la restauration",
"symbols/UseProgramMain/description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur.",
"symbols/UseProgramMain/displayName": "N’utilisez pas _d’instructions de niveau supérieur.",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Restaurez les packages NuGet requis par ce projet.",
"postActions/restore/manualInstructions/default/text": "Exécuter « dotnet restore »",
"postActions/open-file/description": "Ouvre Program.cs dans l’éditeur"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Salta ripristino",
"symbols/UseProgramMain/description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello.",
"symbols/UseProgramMain/displayName": "Non usare_istruzioni di primo livello",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Ripristina i pacchetti NuGet richiesti da questo progetto.",
"postActions/restore/manualInstructions/default/text": "Esegui 'dotnet restore'",
"postActions/open-file/description": "Apre Program.cs nell'editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "復元のスキップ",
"symbols/UseProgramMain/description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。",
"symbols/UseProgramMain/displayName": "最上位レベルのステートメントを使用しない(_T)",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "このプロジェクトに必要な NuGet パッケージを復元します。",
"postActions/restore/manualInstructions/default/text": "'dotnet restore' を実行する",
"postActions/open-file/description": "エディターで Program.cs を開く"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "복원 건너뛰기",
"symbols/UseProgramMain/description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다.",
"symbols/UseProgramMain/displayName": "최상위 문 사용 안 함(_T)",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "이 프로젝트에 필요한 NuGet 패키지를 복원합니다.",
"postActions/restore/manualInstructions/default/text": "'dotnet restore' 실행",
"postActions/open-file/description": "편집기에서 Program.cs를 엽니다"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Pomiń przywracanie",
"symbols/UseProgramMain/description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu.",
"symbols/UseProgramMain/displayName": "Nie używaj ins_trukcji najwyższego poziomu",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Przywróć pakiety NuGet wymagane przez ten projekt.",
"postActions/restore/manualInstructions/default/text": "Uruchom polecenie \"dotnet restore\"",
"postActions/open-file/description": "Otwiera plik Program.cs w edytorze"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Ignorar restauração",
"symbols/UseProgramMain/description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior.",
"symbols/UseProgramMain/displayName": "Não use ins_truções de nível superior",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Restaure os pacotes NuGet exigidos por este projeto.",
"postActions/restore/manualInstructions/default/text": "Executa 'dotnet restore'",
"postActions/open-file/description": "Abre Program.cs no editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Пропустить восстановление",
"symbols/UseProgramMain/description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня.",
"symbols/UseProgramMain/displayName": "Не использовать _операторы верхнего уровня",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Восстановление пакетов NuGet, необходимых для этого проекта.",
"postActions/restore/manualInstructions/default/text": "Выполнить команду \"dotnet restore\"",
"postActions/open-file/description": "Открывает файл Program.cs в редакторе"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "Geri yüklemeyi atla",
"symbols/UseProgramMain/description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir.",
"symbols/UseProgramMain/displayName": "_Üst düzey deyimler kullanmayın",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Bu projenin gerektirdiği NuGet paketlerini geri yükleyin.",
"postActions/restore/manualInstructions/default/text": "'dotnet restore' çalıştır",
"postActions/open-file/description": "Düzenleyicide Program.cs’yi açar"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "跳过还原",
"symbols/UseProgramMain/description": "是否生成显式程序类和主方法,而不是顶级语句。",
"symbols/UseProgramMain/displayName": "不使用顶级语句(_T)",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "还原此项目所需的 NuGet 包。",
"postActions/restore/manualInstructions/default/text": "运行 \"dotnet restore\"",
"postActions/open-file/description": "在编辑器中打开 Program.cs"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"symbols/skipRestore/displayName": "略過還原",
"symbols/UseProgramMain/description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。",
"symbols/UseProgramMain/displayName": "不要使用最上層陳述式(_T)",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "還原此專案所需的 NuGet 套件。",
"postActions/restore/manualInstructions/default/text": "執行 'dotnet restore'",
"postActions/open-file/description": "在編輯器中開啟 Program.cs"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@
"description": "Whether to generate an explicit Program class and Main method instead of top-level statements.",
"displayName": "Do not use _top-level statements"
},
"NativeAot" : {
"type": "parameter",
"datatype": "bool",
"defaultValue": "false",
"displayName": "Enable _native AOT publish",
"description": "Whether to enable the project for publishing as native AOT."
},
"csharp9orOlder": {
"type": "generated",
"generator": "regexMatch",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
<LangVersion Condition="'$(langVersion)' != ''">$(ProjectLanguageVersion)</LangVersion>
<ImplicitUsings Condition="'$(csharpFeature_ImplicitUsings)' == 'true'">enable</ImplicitUsings>
<Nullable Condition="'$(csharpFeature_Nullable)' == 'true'">enable</Nullable>
<!--#if (NativeAot) -->
<PublishAot>true</PublishAot>
<InvariantGlobalization>true</InvariantGlobalization>

<!-- Uncomment below line to make native publish outputs a lot smaller on Linux and macOS -->
<!-- <StripSymbols>true</StripSymbols> -->
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've struggled a bit with the level of detail here. We don't want paragraphs of text that explain native debuggers/profilers/etc may or may not support GNU debuglink and if they don't extra steps are needed to make sense of the resulting binary, etc. Most people will be fine because most tools do support it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about making an aka.ms link, and then you can point it to docs that explains it fully?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should follow the same approach for ASP.NET and Hosting templates. We shouldn't have different strategies for the different templates if there are no technical reasons for it. We should decide here if this is the strategy we want to take, and apply it in all templates.

I also think that this just clutters the template. IMHO - I think StripSymbols=true should be the default without specifying it in the .csproj. It is what most normal .NET devs expect.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think StripSymbols=true should be the default without specifying it in the .csproj. It is what most normal .NET devs expect.

I think this is the crux of it. Lot of feedback I heard was that .NET Devs expect debuggability by default, which would mean we have to leave the symbols there. Another view is what is the typical behavior for the target platform (Linux, containers).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I forgot to add that I think there's a difference between symbols for managed assemblies and symbols for native AOT. Managed assemblies are debugable even without symbols, the symbols only improve the experience somewhat. Native AOT is completely undebugable without symbols. To me that is the key difference between the two and why I think we should treat them separately.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we base it on Release or not?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally I don't think so - but I have no hard data.
In short - I think the number of people publishing AOT with Debug will be tiny. Non-AOT .NET makes little difference between Debug and Release - the debugging experience is very similar. So I think that lot of people don't think about the configuration setting when considering if something is debuggable or not. But these are just my personal guesses...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we decide to default StripSymbols to true on the SDK side, I have some additional questions:

  • .NET developers are used to symbols having the .pdb extension, no matter their underlying representation (managed/portable are very different file formats). Should we also name the native symbol file with the Windows (and by extension .NET) convention? If we don't want people to learn the platform conventions, this follows the principle of least surprise.
  • Is there any point in the AOT console template? My main motivation for it was really just about the discoverability of StripSymbols. <PublishAot>true</PublishAot> doesn't seem to be interesting enough as a differentiator. I've also put <InvariantGlobalization>true</InvariantGlobalization> because it gets rid of ICU on Linux and helps discoverability, but that one is basically just getting a ride. Are the things that are left still important enough that we need a template?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's still worth adding the option to the template if for nothing else that visibility and discovery that native AOT is now a first-class option.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we also name the native symbol file with the Windows (and by extension .NET) convention?

This would not work well even if we wanted to. Many tools infer the file format from the extension. If we started giving .pdb extension to DWARF files, it would be endless source of breaks.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could maybe go with .pdb.dbg/.pdb.dwarf. It's just whether we want people to know these are the debugging symbols, not a vital part of a non-single-file app. We assume .NET developers don't know about the underlying platform. But I guess this would be orthogonal to this PR and at this point it would also be a "breaking" change from 7.0 (so will be the new default though).

@dotnet/templating-engine-maintainers could someone have a look? I think we settled on the non-technical questions and we might tweak this based on the defaults in the coming weeks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could maybe go with .pdb.dbg/.pdb.dwarf. It's just whether we want people to know these are the debugging symbols, not a vital part of a non-single-file app.

I do not think we need to go this far. People will need to learn some amount of platform specific details in any case. The problem is that we do not have a good trigger for learning about symbols today. People do not read the manual; they just try to do stuff. We have seen many variants of a story that goes like this: Somebody builds a native AOT binary on Linux for the first time, sees a single giant binary in the publish folder, and concludes that this technology is unusable. I think that having two files - one smaller executable and one large non-executable - would be good enough to trigger the learning even without the .pdb hint. Seeing two files will make people ask why there are two files, whether they need both, etc.

<!--#endif -->
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
"langVersion": {
"longName": "langVersion",
"shortName": ""
},
"NativeAot": {
"longName": "publish-native-aot",
"shortName": "aot"
}
},
"usageExamples": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,11 @@
"add": [],
"remove": [ "Common" ]
}
],
"symbolInfo": [
{
"id": "NativeAot",
"isVisible": true
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Verze jazyka",
"symbols/skipRestore/description": "Pokud se tato možnost zadá, přeskočí automatické obnovení projektu při vytvoření.",
"symbols/skipRestore/displayName": "Přeskočit obnovení",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Obnoví balíčky NuGet vyžadované tímto projektem.",
"postActions/restore/manualInstructions/default/text": "Spustit dotnet restore",
"postActions/open-file/description": "Otevře Program.vb v editoru."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Sprachversion",
"symbols/skipRestore/description": "Wenn angegeben, wird die automatische Wiederherstellung des Projekts beim Erstellen übersprungen.",
"symbols/skipRestore/displayName": "Wiederherstellung überspringen",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "„NuGet-Pakete“ wiederherstellen, die für dieses Projekt erforderlich sind.",
"postActions/restore/manualInstructions/default/text": "„dotnet restore“ ausführen",
"postActions/open-file/description": "Öffnet „Program.vb“ im Editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
"symbols/langVersion/displayName": "Language version",
"symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
"symbols/skipRestore/displayName": "Skip restore",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"_symbols/NativeAot/displayName.comment": "Use '_' as accelerator key when translating.",
"postActions/restore/description": "Restore NuGet packages required by this project.",
"postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'",
"postActions/open-file/description": "Opens Program.vb in the editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Versión de lenguaje",
"symbols/skipRestore/description": "Si se especifica, se omite la restauración automática del proyecto durante la creación.",
"symbols/skipRestore/displayName": "Omitir restauración",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Restaure los paquetes NuGet necesarios para este proyecto.",
"postActions/restore/manualInstructions/default/text": "Ejecutar \"dotnet restore\"",
"postActions/open-file/description": "Abre Program.vb en el editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Version du langage",
"symbols/skipRestore/description": "S’il est spécifié, ignore la restauration automatique du projet lors de la création.",
"symbols/skipRestore/displayName": "Ignorer la restauration",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Restaurez les packages NuGet requis par ce projet.",
"postActions/restore/manualInstructions/default/text": "Exécuter « dotnet restore »",
"postActions/open-file/description": "Ouvre Program.vb dans l’éditeur"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Versione del linguaggio",
"symbols/skipRestore/description": "Se specificato, ignora il ripristino automatico del progetto durante la creazione.",
"symbols/skipRestore/displayName": "Salta ripristino",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Ripristina i pacchetti NuGet richiesti da questo progetto.",
"postActions/restore/manualInstructions/default/text": "Esegui 'dotnet restore'",
"postActions/open-file/description": "Apre Program.vb nell'editor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "言語バージョン",
"symbols/skipRestore/description": "指定した場合、作成時にプロジェクトの自動復元がスキップされます。",
"symbols/skipRestore/displayName": "復元のスキップ",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "このプロジェクトに必要な NuGet パッケージを復元します。",
"postActions/restore/manualInstructions/default/text": "'dotnet restore' を実行する",
"postActions/open-file/description": "エディターで Program.vb を開く"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "언어 버전",
"symbols/skipRestore/description": "지정된 경우, 프로젝트 생성 시 자동 복원을 건너뜁니다.",
"symbols/skipRestore/displayName": "복원 건너뛰기",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "이 프로젝트에 필요한 NuGet 패키지를 복원합니다.",
"postActions/restore/manualInstructions/default/text": "'dotnet restore' 실행",
"postActions/open-file/description": "편집기에서 Program.vb를 엽니다"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"symbols/langVersion/displayName": "Wersja języka",
"symbols/skipRestore/description": "Jeśli ta opcja jest określona, pomija automatyczne przywracanie projektu podczas tworzenia.",
"symbols/skipRestore/displayName": "Pomiń przywracanie",
"symbols/NativeAot/description": "Whether to enable the project for publishing as native AOT.",
"symbols/NativeAot/displayName": "Enable _native AOT publish",
"postActions/restore/description": "Przywróć pakiety NuGet wymagane przez ten projekt.",
"postActions/restore/manualInstructions/default/text": "Uruchom polecenie \"dotnet restore\"",
"postActions/open-file/description": "Otwiera plik Program.vb w edytorze"
Expand Down
Loading