2016-02-18 9 views
2

У меня есть файл resx в папке App_GlobalResources моего веб-приложения ASP.NET.Могу ли я использовать ресурс (resx) как «Встроенный ресурс» *, а также * как «Содержимое»?

  • Его построить свойство должно быть установлено значение «Content», чтобы файл автоматически включается при публикации и я могу использовать <%$ Resources: ... %> выражения.

  • Свойство его свойства должно быть установлено в «Embedded Resource», so that my unit tests can access the resources.

Есть ли какой-то трюк, который я могу использовать для обоих?


Примечание: Решения в связанном вопросе не будет работать, так как

  • насмешливым HttpContext не даст блок тестовый доступ к не встраиваемый ресурсам и
  • перемещение ресурсов из App_GlobalResources прерывает поддержку <%$ Resources: ... %> после развертывания.

Есть ли какие-либо решения, которые я пропустил?

ответ

0

Установите свойство build ваших файлов ресурсов на «Embedded Resource».

Затем, чтобы убедиться, что они включены при публикации, добавьте следующие строки в нижней части 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 ,