3

我正在为我的ASP5 MVC6应用程序创建集成测试(网络类库项目)。我想将一个带有原始SQL的资源文件添加到用于数据库准备的测试项目中。如何在Visual Studio 2015中使用资源文件

我想使用良好的旧资源(.resx)。但我在add new item项目的菜单中没有。

我找到了this答案指向github repo。我想这是他读文件:

using (var stream = FileProvider.GetFileInfo("compiler/resources/layout.html").CreateReadStream()) 
       using (var streamReader = new StreamReader(stream)) 
       { 
        return streamReader.ReadToEnd().Replace("~", $"{basePath}/compiler/resources"); 
       } 

我在测试帮手在TestHelper类项目中使用System.IO.File.ReadAllText("compiler/resources/my.sql")尝试。

当我在我的实际测试项目中使用TestHelper类时,它正在测试项目目录中查找该文件。

TestProject/compiler/resources/my.sqlTestHelperProject/compiler/resources/my.sql

insetad我可以找出一对夫妇的解决方法。不过,我想以正确的方式做到这一点。最好喜欢我会用resx文件做:

string sql = Resources.MySql; 

有什么建议吗?

编辑

项目类型 enter image description here

可用的项目 enter image description here

+0

您正在使用什么项目模板?在新的ASP.NET项目模板选择器中没有看到“Web类库项目”。 – Dai

+1

FWIW,在Visual Studio 2015的ASP.NET项目的“Visual C#> General”类别下,“Resources File”(带有'.resx'扩展名)** does **出现在ASP.NET项目的Add New Item对话框中。 – Dai

+0

@戴请参阅编辑。顺便说一句,如果我创建一个正常的类库项目,并尝试添加一个引用到我的ASP5项目我得到一个错误“无法添加引用'MyAsp5Project'' – gisek

回答

1

这是一个有点复杂,因为没有工具的支持,但它是可行的:

  1. 创建一个resx文件或从其他地方复制它像一个经典的C#项目
  2. 如果您可以使用sake作为构建系统,那么您可以使用我们,ASP.NET团队使用的相同目标:https://github.com/aspnet/Universe/blob/dev/build/_k-generate-resx.shade否则,您需要实现在您自己的构建脚本中有类似的东西
  3. 将资源设置为compiler/resources。如果你把它们放在任何其他文件夹下,然后将它们包含在项目json中(如here
  4. 使用清酒构建,然后使用dnx构建。您的资源应作为强类型对象提供
+0

呃..这是一种单调乏味。是否有计划恢复工具? – gisek

+0

您好Victor!使用IHtmlLocalizer进行本地化? – Neel

+0

因此,它看起来像Visual Studio Update 1为此添加了工具支持?它看起来并不完整,因为同一个项目中的其他类似乎没有立即拾取任何新的资源,也无法更改访问修饰符。在这些方面,这是一个倒退,但至少它似乎又在那里。 –

相关问题