我创建了一个单元测试来检查文件。这可以放在持续集成服务器中以检查硬盘驱动器中是否存在文件。希望这可以帮助在开发团队工作时面临同样问题的人:
此示例在位于的文件中运行测试D:\YourProject\Solution\My.Website
在您的测试项目中处理文件 IO 的助手(假设它是 on D:\YourProject\Solution\My.Website.Tests
)
internal sealed class IOHelper
{
/// <summary>
/// get list of files described in csproj
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public static List<string> GetFilesInCSPROJ(string filename)
{
var list = new List<string>();
var lines = File.ReadLines(filename);
foreach (string line in lines)
{
if (line.Contains("<Content Include="))
list.Add(Regex.Matches(line, "(?:[^\"]+|\\.)*")[2].Value);
}
return list;
}
}
在您的测试项目中(假设它是 on D:\YourProject\Solution\My.Website.Tests
)
/// <summary>
/// Tests for CSPROJ
/// </summary>
[TestClass]
public class TestCSPROJ
{
/// <summary>
/// check if CSPROJ content files exist in disk
/// </summary>
[TestMethod]
public void CsProj_Files_Exist_In_Disk()
{
string root = Environment.CurrentDirectory.Substring(0, Environment.CurrentDirectory.IndexOf("\\Solution\\TestResults"))
+ "\\Website\\My.Website\\";
string websiteProj = root + "My.Website.csproj";
var list = IOHelper.GetFilesInCSPROJ(websiteProj);
Assert.IsTrue(list != null, "there are no content files added in Portal6.Website.csproj");
foreach (var item in list)
{
Assert.IsTrue(System.IO.File.Exists(root + item), "FAILED - file not found in disk: " + root + item);
}
}
}