我可以将资源(resx)文件用作“嵌入式资源”*以及*作为“内容”吗?

时间:2016-02-18 10:13:58

标签: c# asp.net unit-testing resx app-globalresources

我的ASP.NET Web应用程序的App_GlobalResources文件夹中有一个resx文件。

  • 必须将其构建属性设置为“内容”,以便在发布期间自动包含该文件,并且我可以使用<%$ Resources: ... %>表达式。

  • 必须将其构建属性设置为“嵌入资源”so that my unit tests can access the resources

我可以使用一些技巧同时拥有它们吗?

注意:链接问题中的解决方案无效,因为

  • 模拟HttpContext不会给单元测试访问非嵌入资源和
  • 从App_GlobalResources中移出资源会在部署后中断<%$ Resources: ... %>支持。

有没有我错过的解决方案?

1 个答案:

答案 0 :(得分:0)

将资源文件的build属性设置为&#34; Embedded Resource&#34;。

然后,为了确保在发布时包含它们,请将以下内容添加到vbprojcsproj文件的底部:

<Target Name="CopyResx" AfterTargets="CopyAllFilesToSingleFolderForPackage">
  <ItemGroup>
    <ResxFilesToCopy Include="App_GlobalResources\*.resx" />
  </ItemGroup>
  <Copy SourceFiles="@(ResxFilesToCopy)" DestinationFolder="$(WebProjectOutputDir)\$(WPPAllFilesInSingleFolder)\App_GlobalResources" />
</Target>

注意:我们需要使用CopyAllFilesToSingleFolderForPackage代替MSDeployPublish,因为后者won't be executed when publishing a web application to a file system directory

相关问题