Единственный известный мне способ - запустить собственный запуск Cassini для события post.build. Этот пользовательский процесс убивает все экземпляры Cassini и запускает новый.
Чтобы заставить это работать, вам нужно создать небольшую утилиту командной строки. Я назвал это SpawnProcess здесь.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Diagnostics;
namespace SpawnProc
{
class Program
{
public static void Main(string[] args)
{
if (args.Length > 0)
{
// Kill all current instances
FileInfo fi = new FileInfo(args[0]);
string name = Path.GetFileNameWithoutExtension(fi.FullName);
foreach (Process proc in Process.GetProcessesByName(name))
{
proc.Kill();
}
ProcessStartInfo startInfo = new ProcessStartInfo(args[0]);
if (args.Length > 1)
{
startInfo.Arguments += "/port:" + args[1];
}
if (args.Length > 2)
{
startInfo.Arguments += " /path:\"" + args[2].Trim(new char[]{'"'}) + "\"";
}
if (args.Length > 3)
{
startInfo.Arguments += " /vpath:\"" + args[3].Trim(new char[]{'"'}) + "\"";
}
try
{
Process.Start(startInfo);
}
catch (Exception ex)
{
Debug.WriteLine("Error: " + ex.Message);
for (int i = 0; i < args.Length; i++)
{
Debug.WriteLine("args[" + i + "]: " + args[i].ToString());
}
}
}
}
}
}
Тогда вам придется дать указание Visual Studio не использовать Cassini. Перейдите в свойства вашего веб-приложения -> Интернет и выберите «Использовать пользовательский веб-сервер», введите что-то вроде: http://localhost:1685/
(или любой другой номер порта, который вы хотели бы использовать).
Затем введите эту команду в событии после сборки:
"$(ProjectDir)..\SpawnProc\bin\debug\SpawnProc" "C:\Program Files (x86)\Common Files\microsoft shared\DevServer\9.0\WebDev.WebServer.exe" 1685 "$(ProjectDir)" /
Убедитесь, что ваши пути указаны правильно, например, поскольку я использую 64-битную ОС, путь к моим программным файлам отличается от 32-битной ОС. Кроме того, мой SpawnProc.exe находится в подпроекте.