【问题标题】:Can I use a resource (resx) file as an "Embedded Resource" *as well as* as "Content"?我可以将资源 (resx) 文件用作“嵌入式资源”*以及*作为“内容”吗?
【发布时间】:2016-02-18 10:13:57
【问题描述】:

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

  • 它的构建属性必须设置为“内容”,以便在发布过程中自动包含文件,我可以使用<%$ Resources: ... %> 表达式。

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

有什么技巧可以让我两者兼得吗?


注意:链接问题中的解决方案将不起作用,因为

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

有什么我错过的解决方案吗?

【问题讨论】:

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


    【解决方案1】:

    将资源文件的构建属性设置为“嵌入式资源”。

    然后,为确保在发布时包含它们,请将以下内容添加到您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2016-09-09
      • 2016-04-09
      相关资源
      最近更新 更多