是否有一种通用的方法可以访问本地机器 csproj.user 文件以获取 watin 测试的网站 url,以便测试可以在每个开发人员本地服务器以及构建服务器上的 IIS 上运行?我想你可以自己解析 xml 文件,但我想知道是否有更清洁/更简单的方法。
Erik
问问题
485 次
1 回答
1
我找到了这个
作为单元测试设置的一部分启动 ASP.NET 开发 Web 服务器 (Cassini)?
最后只是用从我的测试项目到我的 Web 项目的相对路径做这样的事情。然后在构建服务器上设置适当的 csproj.user 文件。
公共静态字符串 GetDevelopmentServerURL(string csprojFileName) { XPathDocument doc = new XPathDocument(csprojFileName); XPathNavigator 导航器 = doc.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("msbuild",
"http://schemas.microsoft.com/developer/msbuild/2003");
const string xpath = "/msbuild:Project/msbuild:ProjectExtensions/"
+ "msbuild:VisualStudio/msbuild:FlavorProperties/"
+ "msbuild:WebProjectProperties";
XPathNavigator webProjectPropertiesNode =
navigator.SelectSingleNode(xpath, manager);
XPathNavigator developmentServerPortNode =
webProjectPropertiesNode.SelectSingleNode("msbuild:DevelopmentServerPort",
manager);
XPathNavigator developmentServerVPathNode =
webProjectPropertiesNode.SelectSingleNode("msbuild:DevelopmentServerVPath",
manager);
XPathNavigator UseIIS =webProjectPropertiesNode.SelectSingleNode("msbuild:UseIIS",
manager);
XPathNavigator IISPath = webProjectPropertiesNode.SelectSingleNode("msbuild:IISUrl",
manager);
XPathNavigator UseCustomServer = webProjectPropertiesNode.SelectSingleNode("msbuild:UseCustomServer",manager);
XPathNavigator CustomeServerPath = webProjectPropertiesNode.SelectSingleNode("msbuild:CustomServerUrl",
manager);
if (UseIIS.Value == "True")
return IISPath.Value;
if (UseCustomServer.Value == "True")
return CustomeServerPath.Value;
return "http://localhost:" + developmentServerPortNode.Value + developmentServerVPathNode;
}
于 2008-12-12T04:07:05.710 回答