Visual studio 2010 Visual Studio项目模板和资源文件

Visual studio 2010 Visual Studio项目模板和资源文件,visual-studio-2010,visual-studio-templates,Visual Studio 2010,Visual Studio Templates,我正在尝试为VisualStudio创建一个自定义项模板,用于创建多个文件。其中两个文件是Resource.resx文件和相应的“Resource.Designer.cs”文件 我已在.vstemplate文件中使用此声明将它们显示为父子文件: <ProjectItem ItemType="EmbeddedResource" TargetFileName="$fileinputname$Resources.resx" ReplaceParameters="true">Resource

我正在尝试为VisualStudio创建一个自定义项模板,用于创建多个文件。其中两个文件是
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>
Resources.resx
Resources.Designer.cs
这也将
Resource.resx
声明为嵌入式资源

我现在遇到的问题是,
Resource.resx
文件在使用此模板创建项后没有将
Resources.Designer.cs
用作代码隐藏文件。只要我在
resource.resx
文件中添加一个新的资源字符串,它就会创建一个新的
Resources1.Designer.cs
文件,VisualStudio从那时起将其用作代码隐藏

我检查了Visual Studio创建新代码隐藏文件前后在
.csproj
文件中所做的更改,发现主要原因是
资源.resx
文件中没有
条目


是否有某种方法可以通过
.vstemplate
声明
,或者通过任何其他方法将
.resx
文件与其代码隐藏文件连接起来,而无需手动执行?

应使用C#项目文件(.csproj)中的标记声明父子关系,如下所示:

<Project ...>
   ...
    <ItemGroup>
      ...
        <EmbeddedResource Include="Resources.resx">
           ...
        </EmbeddedResource>
        <Compile Include="Resources.Designer.cs">
            <DependentUpon>Resources.resx</DependentUpon>
            ...
        </Compile>
        ...
    </ItemGroup>
 </Project>

...
...
...
Resources.resx
...
...

不太清楚为什么需要此模板,因为它已经包含在Visual Studio中。您可以使用Project+添加新项目+常规+资源文件来选择它

如果你想定制它,那么最好的办法就是从现有的开始。导航到C:\Program Files(x86)\Microsoft Visual Studio x.x\Common7\IDE\ItemTemplatesCache\CSharp\General\1033\Resource.zip,其中x.x是VS版本号,如果不使用英文版本的VS,1033可能会有所不同

我将发布您将在那里找到的.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>

Microsoft.CSharp.Resource
CSharp
2
1.
Resource.resx
Resource.resx
Microsoft.VisualStudio.Editor,版本=9.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a
Microsoft.VisualStudio.Editor.ResourceEditor.ResxItemWizard

如果要添加更多文件,请添加更多
元素。

我已经管理了有关
Visual Studio
层次结构的父子关系。但它不处理类和设计器之间的映射。它必须通过
.csproj
文件中的
标记进行处理。而且,虽然我知道
.csproj
文件应该是什么样子,但我很难通过
visualstudio项目模板
来指定它。这正是我想要的。解决方案的关键部分是侧注上的
,您知道如何将生成的
.resx
文件
公开
,而不是默认设置的
内部
?@Hans执行
功能请求任务
:)