You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨项目访问SQL文件:测试项目读取其他项目SQL脚本的方法及构建设置

跨项目访问SQL文件的可靠方案及构建操作设置

必须设置构建操作

不管采用哪种访问方式,都需要对CreateTable.sql文件配置对应的构建操作,否则测试项目无法正常读取该文件。

两种可靠的访问方式

方式一:将SQL文件作为嵌入资源(推荐)

这种方式把SQL文件直接打包到ProjectOne的程序集内,不会出现文件丢失或路径错误的问题,是最稳定的方案:

  1. 在Visual Studio中选中ProjectOne/Data/CreateTable.sql,打开属性窗口
  2. 设置生成操作为「嵌入的资源」,复制到输出目录保持「不复制」即可
  3. 在DatabaseFixture.cs中通过程序集读取资源:
// 用ProjectOne中的任意类获取其程序集,比如项目内的数据实体类
var assembly = typeof(ProjectOne.Data.YourDataClass).Assembly;
// 资源名称格式为「命名空间.目录结构.文件名」,默认命名空间与项目名一致
using var resourceStream = assembly.GetManifestResourceStream("ProjectOne.Data.CreateTable.sql");
using var reader = new StreamReader(resourceStream);
string sqlContent = reader.ReadToEnd();

可以调用assembly.GetManifestResourceNames()输出所有嵌入资源的名称,用来确认SQL文件对应的资源名是否正确。

方式二:将SQL文件复制到输出目录

如果需要随时修改SQL文件而无需重新编译项目,可采用这种方式:

  1. 选中CreateTable.sql,设置生成操作为「内容」,复制到输出目录为「如果较新则复制」
  2. 在测试代码中通过运行目录的相对路径读取:
// AppContext.BaseDirectory指向当前测试程序集的运行目录
string sqlFilePath = Path.Combine(AppContext.BaseDirectory, "Data", "CreateTable.sql");
string sqlContent = File.ReadAllText(sqlFilePath);

注意:如果ProjectOne与测试项目的输出目录层级不同,可能需要调整路径(比如添加../ProjectOne/bin/Debug/netX.x/Data/这类相对路径),但这种方式的稳定性不如嵌入资源。

内容的提问来源于stack exchange,提问作者LCaraway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:04:51