Visual Studio项目模板和资源文件

时间:2012-12-19 14:20:43

标签: visual-studio-2010 visual-studio-templates

我正在尝试为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,而无需手动执行?

2 个答案:

答案 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>元素。