【问题标题】: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 文件。
有什么技巧可以让我两者兼得吗?
注意:链接问题中的解决方案将不起作用,因为
- 模拟 HttpContext 不会让单元测试访问非嵌入式资源,并且
- 将资源移出 App_GlobalResources 会在部署后中断
<%$ Resources: ... %> 支持。
有什么我错过的解决方案吗?
【问题讨论】:
标签:
c#
asp.net
unit-testing
resx
app-globalresources
【解决方案1】:
将资源文件的构建属性设置为“嵌入式资源”。
然后,为确保在发布时包含它们,请将以下内容添加到您的 vbproj 或 csproj 文件的底部:
<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。