回答編集履歴

2

見直しキャンペーン中

2023/08/14 12:52

投稿

TN8001
TN8001

スコア9884

test CHANGED
@@ -24,7 +24,7 @@
24
24
  [VisualStudioで項目テンプレートを作成する+プロジェクトのプロパティを使う - Qiita](https://qiita.com/tanitanin/items/0c39169f9e643a03ea1d)
25
25
 
26
26
  Qiita記事で1点気になったのは、NuGetから`VSSDK.TemplateWizardInterface`を入れるようにという点です(上げているのは中の人っぽいので、そこまで警戒しなくてもいいかもしれませんが)
27
- `Visual Studio SDK`を入れていれば、そもそも入っているはずです(上記Docsに参照の入れ方が書いてあります)
27
+ Visual Studio SDKを入れていれば、そもそも入っているはずです(上記Docsに参照の入れ方が書いてあります)
28
28
  入れるにしても公式があるようなので、こちらがいいでしょう。
29
29
  [NuGet Gallery | Microsoft.VisualStudio.TemplateWizardInterface 16.10.31320.204](https://www.nuget.org/packages/Microsoft.VisualStudio.TemplateWizardInterface/16.10.31320.204)
30
30
 

1

見直しキャンペーン中

2023/07/28 16:33

投稿

TN8001
TN8001

スコア9884

test CHANGED
@@ -1,179 +1,90 @@
1
1
  > 実際には、ソースコードではファイル名に指定された文字列を大文字に変換した文字列を使用したいのですが、そういった変換はVisual Studio 2019で可能でしょうか?
2
2
 
3
-
4
-
5
3
  私は下記拡張機能を入れてツールバーに登録しています。
6
-
7
4
  マウスクリックでSCREAMING_SNAKE_CASEにはできます(ほかにも同様のものがあるかもしれません)
8
-
9
5
  [Case Converter - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=munyabe.CaseConverter)
10
6
 
11
-
12
-
13
7
  これではダメでしょうか?
14
-
15
8
  というのもできたはできたのですが、非常に面倒だったためです^^;
16
-
17
9
  作り方は参考記事に詳しく書かれていますので、面倒なだけで難しくはないです。
18
-
19
10
  一度作ってしまえば何百回でも使えるわけで、どうするかはry188472さん次第です。
20
-
21
-
22
-
23
11
 
24
12
 
25
13
  > 同様の質問では「できない」という回答がありましたが、VS2019でできるようになってたらいいなあという気持ちもあり質問しています。
26
14
 
27
-
28
-
29
15
  [c++ - Uppercase Visual Studio itemTemplate Parameters - Stack Overflow](https://stackoverflow.com/questions/37118625/uppercase-visual-studio-itemtemplate-parameters)
30
16
 
31
-
32
-
33
17
  質問者自身が言及している別スレッドには、回答がついています(質問当時は回答がなかったようですが)
34
-
35
18
  [Uppercase Visual Studio 2013 project template $itemname$ - Stack Overflow](https://stackoverflow.com/questions/31171992/uppercase-visual-studio-2013-project-template-itemname)
36
-
37
-
38
19
 
39
20
  コードの断片なのでどういうことかわかりにくいですが、「カスタム テンプレート ウィザード」を作れと言っています。
40
21
 
41
-
42
-
43
22
  [方法 : プロジェクト テンプレートを組み合わせたウィザードを使用する - Visual Studio (Windows) | Microsoft Docs](https://docs.microsoft.com/ja-jp/visualstudio/extensibility/how-to-use-wizards-with-project-templates)
44
-
45
-
46
23
 
47
24
  [VisualStudioで項目テンプレートを作成する+プロジェクトのプロパティを使う - Qiita](https://qiita.com/tanitanin/items/0c39169f9e643a03ea1d)
48
25
 
49
-
50
-
51
26
  Qiita記事で1点気になったのは、NuGetから`VSSDK.TemplateWizardInterface`を入れるようにという点です(上げているのは中の人っぽいので、そこまで警戒しなくてもいいかもしれませんが)
52
-
53
27
  `Visual Studio SDK`を入れていれば、そもそも入っているはずです(上記Docsに参照の入れ方が書いてあります)
54
-
55
28
  入れるにしても公式があるようなので、こちらがいいでしょう。
56
-
57
29
  [NuGet Gallery | Microsoft.VisualStudio.TemplateWizardInterface 16.10.31320.204](https://www.nuget.org/packages/Microsoft.VisualStudio.TemplateWizardInterface/16.10.31320.204)
58
30
 
59
31
 
60
-
61
-
62
-
63
- ```C#
32
+ ```cs
64
-
65
33
  using EnvDTE;
66
-
67
34
  using Microsoft.VisualStudio.TemplateWizard;
68
-
69
35
  using System.Collections.Generic;
70
36
 
71
-
72
-
73
37
  namespace VSIXProject1
74
-
75
38
  {
76
-
77
39
  public class Class1 : IWizard
78
-
79
40
  {
80
-
81
41
  public void BeforeOpeningFile(ProjectItem projectItem) { }
82
-
83
42
  public void ProjectFinishedGenerating(Project project) { }
84
-
85
43
  public void ProjectItemFinishedGenerating(ProjectItem projectItem) { }
86
-
87
44
  public void RunFinished() { }
88
-
89
45
  public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
90
-
91
46
  {
92
-
93
47
  replacementsDictionary.Add("$uppersafeitemname$", replacementsDictionary["$safeitemname$"].ToUpper(CultureInfo.InvariantCulture));
94
-
95
48
  }
96
-
97
49
  public bool ShouldAddProjectItem(string filePath) => true;
98
-
99
50
  }
100
-
101
51
  }
102
-
103
52
  ```
104
53
 
105
-
106
-
107
54
  テンプレート
108
-
109
- ```C#
55
+ ```cs
110
-
111
56
  using System;
112
-
113
57
  using System.Collections.Generic;
114
-
115
58
  using System.Linq;
116
-
117
59
  using System.Text;
118
-
119
60
  using System.Threading.Tasks;
120
61
 
121
62
 
122
-
123
-
124
-
125
63
  namespace $rootnamespace$
126
-
127
64
  {
128
-
129
65
  public class $uppersafeitemname$
130
-
131
66
  {
132
-
133
67
  public const string Name = "$itemname$";
134
-
135
68
  }
136
-
137
69
  }
138
-
139
70
  ```
140
71
 
141
-
72
+ 出力
142
-
143
- 出力abc.cs
73
+ ```cs:abc.cs
144
-
145
- ```C#
146
-
147
74
  using System;
148
-
149
75
  using System.Collections.Generic;
150
-
151
76
  using System.Linq;
152
-
153
77
  using System.Text;
154
-
155
78
  using System.Threading.Tasks;
156
79
 
157
80
 
158
-
159
-
160
-
161
81
  namespace ConsoleApp1
162
-
163
82
  {
164
-
165
83
  public class ABC
166
-
167
84
  {
168
-
169
85
  public const string Name = "abc";
170
-
171
86
  }
172
-
173
87
  }
174
-
175
88
  ```
176
89
 
177
-
178
-
179
90
  なぜか`replacementsDictionary`に`$itemname$`がいなかったので、`$safeitemname$`を使用しました。