1

我正在尝试为创建多个文件的 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 从那时起将其用作代码。

我检查了.csprojVisual Studio 创建新的代码隐藏文件之前和之后对文件所做的更改,我发现主要原因是因为没有文件<LastGenOutput>条目Resource.resx

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

4

2 回答 2

1

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

<Project ...>
   ...
    <ItemGroup>
      ...
        <EmbeddedResource Include="Resources.resx">
           ...
        </EmbeddedResource>
        <Compile Include="Resources.Designer.cs">
            <DependentUpon>Resources.resx</DependentUpon>
            ...
        </Compile>
        ...
    </ItemGroup>
 </Project>
于 2013-01-02T10:56:34.653 回答
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>元素。

于 2013-01-06T23:13:54.747 回答