2008-11-30 6 views

Répondre

2

est ici un code:

private static void GetDevelopmentServerVPathAndPortFromProjectFile(
    string csprojFileName, 
    out string developmentServerVPath, 
    out int developmentServerPort) 
{ 
    XPathDocument doc = new XPathDocument(csprojFileName); 
    XPathNavigator navigator = 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); 

    developmentServerPort = developmentServerPortNode.ValueAsInt; 
    developmentServerVPath = developmentServerVPathNode.Value; 
} 

private static string GetCommonProgramFilesPath() 
{ 
    string commonProgramFiles = 
     Environment.GetEnvironmentVariable("CommonProgramFiles(x86)"); 
    if (string.IsNullOrEmpty(commonProgramFiles)) 
    { 
     commonProgramFiles = 
      Environment.GetEnvironmentVariable("CommonProgramFiles"); 
    } 
    if (string.IsNullOrEmpty(commonProgramFiles)) 
    { 
     commonProgramFiles = 
      Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles); 
    } 
    return commonProgramFiles; 
} 

private static Process PrepareCassiniProcess(int developmentServerPort, 
              string projectPhysicalPath, 
              string developmentServerVPath) 
{ 
    string commonProgramFiles = GetCommonProgramFilesPath(); 
    string cassiniPath = Path.Combine(commonProgramFiles, 
     @"Microsoft Shared\DevServer\9.0\WebDev.WebServer.exe"); 
    string cassiniArgs = string.Format(
     CultureInfo.InvariantCulture, 
     "/port:{0} /nodirlist /path:\"{1}\" /vpath:\"{2}\"", 
     developmentServerPort, projectPhysicalPath, developmentServerVPath); 

    Process cassiniProcess = new Process(); 
    cassiniProcess.StartInfo.FileName = cassiniPath; 
    cassiniProcess.StartInfo.Arguments = cassiniArgs; 
    return cassiniProcess; 
} 

Pour l'utiliser, vous avez besoin de découvrir le chemin vers le fichier csproj du projet web en cours de test. Je laisserai cela au lecteur (je l'ai actuellement codé en dur).

8

Je viens de publier la version bêta de CassiniDev 3.5.1/4.0.1 avec un exemple d'installation de test simple si cela vous intéresse.

Cassini pour les développeurs et testeurs: http://cassinidev.codeplex.com

Mo Betta, mot.

Questions connexes