実際には、ソースコードではファイル名に指定された文字列を大文字に変換した文字列を使用したいのですが、そういった変換はVisual Studio 2019で可能でしょうか?
私は下記拡張機能を入れてツールバーに登録しています。
マウスクリックでSCREAMING_SNAKE_CASEにはできます(ほかにも同様のものがあるかもしれません)
Case Converter - Visual Studio Marketplace
これではダメでしょうか?
というのもできたはできたのですが、非常に面倒だったためです^^;
作り方は参考記事に詳しく書かれていますので、面倒なだけで難しくはないです。
一度作ってしまえば何百回でも使えるわけで、どうするかはry188472さん次第です。
同様の質問では「できない」という回答がありましたが、VS2019でできるようになってたらいいなあという気持ちもあり質問しています。
c++ - Uppercase Visual Studio itemTemplate Parameters - Stack Overflow
質問者自身が言及している別スレッドには、回答がついています(質問当時は回答がなかったようですが)
Uppercase Visual Studio 2013 project template $itemname$ - Stack Overflow
コードの断片なのでどういうことかわかりにくいですが、「カスタム テンプレート ウィザード」を作れと言っています。
方法 : プロジェクト テンプレートを組み合わせたウィザードを使用する - Visual Studio (Windows) | Microsoft Docs
VisualStudioで項目テンプレートを作成する+プロジェクトのプロパティを使う - Qiita
Qiita記事で1点気になったのは、NuGetからVSSDK.TemplateWizardInterface
を入れるようにという点です(上げているのは中の人っぽいので、そこまで警戒しなくてもいいかもしれませんが)
Visual Studio SDKを入れていれば、そもそも入っているはずです(上記Docsに参照の入れ方が書いてあります)
入れるにしても公式があるようなので、こちらがいいでしょう。
NuGet Gallery | Microsoft.VisualStudio.TemplateWizardInterface 16.10.31320.204
cs
1using EnvDTE;
2using Microsoft.VisualStudio.TemplateWizard;
3using System.Collections.Generic;
4
5namespace VSIXProject1
6{
7 public class Class1 : IWizard
8 {
9 public void BeforeOpeningFile(ProjectItem projectItem) { }
10 public void ProjectFinishedGenerating(Project project) { }
11 public void ProjectItemFinishedGenerating(ProjectItem projectItem) { }
12 public void RunFinished() { }
13 public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
14 {
15 replacementsDictionary.Add("$uppersafeitemname$", replacementsDictionary["$safeitemname$"].ToUpper(CultureInfo.InvariantCulture));
16 }
17 public bool ShouldAddProjectItem(string filePath) => true;
18 }
19}
テンプレート
cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6
7
8namespace $rootnamespace$
9{
10 public class $uppersafeitemname$
11 {
12 public const string Name = "$itemname$";
13 }
14}
出力
cs:abc.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6
7
8namespace ConsoleApp1
9{
10 public class ABC
11 {
12 public const string Name = "abc";
13 }
14}
なぜかreplacementsDictionary
に$itemname$
がいなかったので、$safeitemname$
を使用しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/19 05:11 編集