Ant*_*ott 16 resx visual-studio-2010
我公司使用一些数据库表,一个网页前端和一个"导出"应用程序的组合来处理我们网站中的字符串资源.
当我们使用VS2008时,导出应用程序曾经工作得很好,但是自从切换到VS2010后,资源现在在解决方案资源管理器中"下方"有一个designer.cs文件.
问题是"导出"应用程序只生成.resx文件而不生成底层的designer.cs文件.
那么,有没有办法不使用那些designer.cs文件,或者某种方式自动重新生成(甚至某些命令导出应用程序可以调用重新生成它们)
ian*_*eub 13
我有一个问题,VS 2010不会重新生成Designer.cs文件,并且无法在其他地方找到解决方案.
我能够重新生成它们,而无需进入命令行.
若要解决Visual Studio 2010中的问题,我执行了以下操作:
Run Custom Tool这重建了Designer.cs文件.
希望将来有可能帮助别人..
从MSDN我们有:
构建应用程序时,Visual Studio将调用 resgen.exe用于将应用程序资源转换为名为Resources的内部类的工具.此类包含在Resources.Designer.cs文件中,该文件嵌套在解决方案资源管理器中的Resources.resx文件下.Resources类将所有项目资源封装到静态readonly get属性中,作为在运行时提供强类型资源的方法.通过Visual C#IDE构建时,所有封装的资源数据(包括嵌入到.resx文件中的资源和链接文件)都直接编译到应用程序程序集(.exe或.dll文件)中.换句话说,Visual C#IDE始终使用/ resource编译器选项.如果从命令行构建,您可以指定/ linkresource编译器选项,该选项将使您能够在主应用程序集中的单独文件中部署资源.这是一种高级方案,仅在某些罕见情况下才需要.
如果您更喜欢在构建项目时从 *.resx 文件自动生成 *.designer.cs 文件,以下方法对我们有用,也可能对您有用:
<Target Name="GenerateDesignerFiles">
<Message Text="正在删除旧的设计器文件..."/>
<Delete Files="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).resources')"/>
<Delete Files="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).designer.cs')"/>
<Message Text="正在生成设计器文件..."/>
<生成资源
来源="@(EmbeddedResource)"
StronglyTypedLanguage="C#"
StronglyTypedClassName="%(文件名)"
StronglyTypedNamespace="@(EmbeddedResource->'%(CustomToolNamespace)')"
StronglyTypedFileName="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).designer.cs')"
公共类=“真”
>
</生成资源>
<Message Text="生成设计器文件完成。"/>
</目标>
<目标名称="BeforeBuild"> <CallTarget Targets="GenerateDesignerFiles"/> </目标>
此解决方案基于在项目文件的 ItemGroup 中列为“EmbeddedResource”的所有资源文件,例如
<项目组>
<EmbeddedResource Include="Resources\Creditor\Display_Creditor.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Display_Creditor.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.Creditor</CustomToolNamespace>
</嵌入式资源>
<EmbeddedResource Include="Resources\InboundEmail\Tooltip_InboundEmailDetails.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Tooltip_InboundEmailDetails.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.InboundEmail</CustomToolNamespace>
</嵌入式资源>
<EmbeddedResource Include="Resources\Creditor\Tooltip_CreditorDetails.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Tooltip_CreditorDetails.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.Creditor</CustomToolNamespace>
</嵌入式资源>
</ItemGroup>
免责声明:这已经过 Visual Studio 2013 和 C# 项目的测试。它可能适用于也可能不适用于其他项目和/或其他版本的 Visual Studio。