1

是否有一种通用的方法可以访问本地机器 csproj.user 文件以获取 watin 测试的网站 url,以便测试可以在每个开发人员本地服务器以及构建服务器上的 IIS 上运行?我想你可以自己解析 xml 文件,但我想知道是否有更清洁/更简单的方法。

4

1 回答 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 回答