我正在尝试为Visual Studio创建一个创建多个文件的自定义项模板。其中两个文件是Resource.resx
文件和相应的“Resource.Designer.cs”文件。
我已设法在.vstemplate
文件中将此声明显示为父子文件:
<ProjectItem ItemType="EmbeddedResource" TargetFileName="$fileinputname$Resources.resx" ReplaceParameters="true">Resources.resx</ProjectItem>
<ProjectItem TargetFileName="$fileinputname$Resources.resx\$fileinputname$Resources.Designer.cs" ReplaceParameters="true">Resources.Designer.cs</ProjectItem>
这也将Resource.resx
声明为嵌入式资源。
我现在遇到的问题是,在使用此模板创建项目后,Resource.resx
文件不使用Resources.Designer.cs
作为代码隐藏文件。只要在Resource.resx
文件中添加新的资源字符串,它就会创建一个新的Resources1.Designer.cs
文件,Visual Studio将该文件用作此后的代码。
我已经检查了在Visual Studio创建新的代码隐藏文件之前和之后在.csproj
文件中所做的更改,我发现主要原因是因为{{没有<LastGenOutput>
个条目1}}文件。
有没有办法通过Resource.resx
或任何其他方式将<LastGenOutput>
文件与代码隐藏文件连接起来.vstemplate
,而无需手动执行?
答案 0 :(得分:1)
应使用C#项目文件(.csproj)中的DependendUpon标记声明父子关系,如下所示:
<Project ...>
...
<ItemGroup>
...
<EmbeddedResource Include="Resources.resx">
...
</EmbeddedResource>
<Compile Include="Resources.Designer.cs">
<DependentUpon>Resources.resx</DependentUpon>
...
</Compile>
...
</ItemGroup>
</Project>
答案 1 :(得分:1)
目前尚不清楚为什么需要此模板,因为它已包含在Visual Studio中。您可以使用Project + Add New Item + General + Resources File选择它。
如果您想自定义它,那么您最好的选择是开始使用现有的。导航到C:\ Program Files(x86)\ Microsoft Visual Studio xx \ Common7 \ IDE \ ItemTemplatesCache \ CSharp \ General \ 1033 \ Resource.zip其中xx是VS版本号,如果不使用,则1033可能不同英文版的VS。
我将发布您在那里找到的.vstemplate文件,请务必复制/粘贴文件以自行开始:
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2390" />
<Description Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2391" />
<Icon Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4565" />
<TemplateID>Microsoft.CSharp.Resource</TemplateID>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
<DefaultName>Resource.resx</DefaultName>
</TemplateData>
<TemplateContent>
<ProjectItem>Resource.resx</ProjectItem>
<CustomParameters>
<CustomParameter Name="$itemproperties$" Value="CustomTool" />
<CustomParameter Name="$CustomTool$" Value="ResXFileCodeGenerator" />
</CustomParameters>
</TemplateContent>
<WizardExtension>
<Assembly>Microsoft.VisualStudio.Editors, Version=9.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
<FullClassName>Microsoft.VisualStudio.Editors.ResourceEditor.ResxItemWizard</FullClassName>
</WizardExtension>
</VSTemplate>
如果您想添加更多文件,请添加更多<ProjectItem>
元素。