在我们的 Web 应用程序中,我将iu-Cans-CA
语言环境选为伪语言环境,其中字符串资源键也用作值。这是为自动化测试提供帮助。要.resx
为此语言环境生成 ,我使用的是 T4 模板。
生成正确,.resx
但出了点问题:资源文件没有像其他真正的翻译那样被编译到程序集中。我终于弄清楚了原因。因为 T4 模板用于生成.resx
,所以.csproj
包含以下内容:
<EmbeddedResource Include="Strings.iu-Cans-CA.resx">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Strings.iu-Cans-CA.tt</DependentUpon>
</EmbeddedResource>
出于某种原因,这会阻止.resx
编译。如果我更新.csproj
到这个,它会编译:
<EmbeddedResource Include="Strings.iu-Cans-CA.resx">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</EmbeddedResource>
我希望这将是它的结束,但现在每当.csproj
在 Visual Studio 中加载时,项目文件都会再次更新为以前的结构,再次破坏资源文件的编译。
有没有办法解决问题,以便生成/依赖.resx
正确编译为嵌入式资源?或者有没有办法永久打破依赖关系,这样它就不会继续恢复?我意识到我可以重写它,.tt
因此它会生成一个具有不同名称的文件,但我更愿意找到一个不需要这个的解决方案,因为这是 T4 的非典型用法,我想避免太多的 WTF。