2

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

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

  • 它的构建属性必须设置为“嵌入式资源”,以便我的单元测试可以访问资源

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


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

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

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

4

1 回答 1

1

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

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

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

注意:我们需要使用CopyAllFilesToSingleFolderForPackage而不是,因为在将Web应用程序发布到文件系统目录时不会执行MSDeployPublish后者。

于 2016-06-24T09:07:35.803 回答