2012-06-08 11 views
5

Utilizzo MSBuild per il pacchetto e pubblica un'applicazione Asp.Net MVC 3, .Net 4. L'ho già fatto con successo per un'applicazione MVC 1.0, .Net 3.5.MSBuild Problema IIS

Ogni volta che comprendono le impostazioni di IIS (IncludeIisSettings=true) nel mio file .proj ottengo il seguente errore di generazione:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(2046, 5): error MSB4044: The "EscapeTextForRegularExpressions" task was not given a value for the required parameter "Text".

+0

Questo sembra verificarsi quando 'BaseIntermediateOutputPath' è vuoto, che a sua volta passa un valore vuoto al parametro" Testo "come indicato nell'errore. Una ricostruzione può aiutare. – KMoraz

+0

A ha avuto lo stesso errore, dopo aver migrato un servizio cloud azzurro su una webapp. L'impostazione IncludeIisSettings su False in .csproj lo risolve. – Magu

risposta

8

Ho avuto lo stesso problema sul mio server di build.

Il pacchetto sarebbe perfetto per la mia macchina di sviluppo ma fallirebbe con lo stesso errore che si ha sul mio server di compilazione. Per me il problema è stato causato dal fatto che sulla mia macchina di compilazione, l'applicazione non è registrata con IIS.

Il problema è iniziato quando ho abilitato il test locale in IIS Express nel progetto e in qualche modo indiretto che abilita l'impostazione di IncludeIisSettings=true menzionata. Ciò fa sì che la pipeline di distribuzione Web invii query a IIS per i dettagli del sito. Dal momento che il build server non ha installato IIS 7 o IIS Express, non è stato possibile ottenere tali impostazioni. Questo in definitiva porta all'errore sopra perché il parametro passato all'attività EscapeTextForRegularExpressions è vuoto.

La mia soluzione era quella di impostare IncludeIisSettings a False nelle applicazioni .wpp.targets file (vedere here per un esempio .wpp.targets file). Se si specificano esplicitamente le impostazioni per IIS, questo non dovrebbe essere un problema.

Sono stato anche in grado di correggere la build registrando il sito con IIS Express utilizzando WebMatrix. L'esecuzione del sito in Visual Studio dovrebbe avere lo stesso effetto.

1

Il problema che avevo era con le autorizzazioni, in particolare le impostazioni UAC in Windows 7 dopo il passaggio dei laptop.

Dopo un'attenta verifica della configurazione precedente, mi sono reso conto che avevo ancora le impostazioni UAC predefinite. Per cambiare andare a Start > Control Panel > User Accounts > User Accounts > Change User Account Control Settings. Quindi trascina la barra fino a Never notify.

Ecco alcuni sintomi aggiuntivi che ho osservato, che potrebbero essere utili:

Quando ho eseguito msbuild localmente con IncludeIisSettings=true ho ricevuto lo stesso errore nella domanda.

Dopo alcune frustrazioni e svolte sbagliate, non sono riuscito a capire perché, sebbene io sia un amministratore, ricevevo errori di autorizzazione nelle aree pertinenti, ad es. quando si imposta IncludeIisSettings=false quindi si tenta di eseguire il file di distribuzione ho ricevuto un errore di autorizzazione.

Così ho deciso di esplorare le impostazioni UAC e trovare la soluzione.

+0

Purtroppo non mi ha aiutato. Corro VS come amministratore, ho trasformato UAC al minimo e ho ancora lo stesso errore. Ma buono per te! (Windows 10, provato con le impostazioni incluse e disattivate) – ignacy130

0

La soluzione che abbiamo trovato IncludeIisSettings = true e una build di successo con l'attività "The" EscapeTextForRegularExpressions non ha ricevuto un valore per il parametro richiesto "Testo". " Errore:

  • Installare Visual Studio sul Build Server (già fatto).
  • Installa IIS sul server di build.
  • In IIS, sul sito Web predefinito, aggiungere un'associazione per https (porta 443) e utilizzare il certificato installato da Visual Studio (Certificato di sviluppo IIS Express).