2012-06-08 71 views
5

我正在使用MSBuild打包并发布我的Asp.Net MVC 3,.Net 4应用程序。我已经成功完成了MVC 1.0,.Net 3.5应用程序的这个工作。MSBuild IIS问题

每当我包括IIS设置(IncludeIisSettings=true)在我的.proj文件,我得到下面的生成错误:

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

当'BaseIntermediateOutputPath'为空时,似乎会发生这种情况,而该错误又将空值传递给错误中引用的“Text”参数。重建可能会有所帮助。 – KMoraz

+0

将Azure云服务webrole迁移到webapp后,A发生同样的错误。在.csproj中将IncludeIisSettings设置为False可以解决此问题。 – Magu

回答

8

我有我的生成服务器上同样的问题。

该软件包将在我的开发机器上完美地构建,但会失败,您在我的构建服务器上出现完全相同的错误。对我来说,问题是由于在我的生成机器上,应用程序没有向IIS注册。

当我在项目中启用IIS Express中的本地测试并以某种间接方式启用您提到的IncludeIisSettings=true设置时,问题就开始了。这会导致Web部署管道向IIS查询该站点的详细信息。由于构建服务器没有安装IIS 7或IIS Express,因此无法获得这些设置。这最终导致上面的错误,因为传递给EscapeTextForRegularExpressions任务的参数是空的。

我的解决办法是设置IncludeIisSettingsFalse在应用.wpp.targets文件(参见here为例.wpp.targets文件)。如果您明确指定了IIS的设置,那应该不成问题。

我也能够通过使用WebMatrix注册IIS Express的站点来修复版本。在Visual Studio中运行该网站应该具有相同的效果。

1

我的问题是使用权限,特别是在切换笔记本电脑后Windows 7中的UAC设置。

经过对我以前的配置仔细检查后,我意识到我仍然有默认的UAC设置。要更改为Start > Control Panel > User Accounts > User Accounts > Change User Account Control Settings。然后将该栏一直拖到Never notify

这里有一些其他症状我观察这可能是有益的:

当我跑的MSBuild与本地我IncludeIisSettings=true收到了同样的错误作为的问题。

在经历了一些挫折和错误的转折之后,我无法弄清楚为什么我虽然是管理员,但却在相关领域获得许可错误,例如,当设置IncludeIisSettings=false然后试图运行部署文件我收到权限错误。

因此我决定探索UAC设置并找到解决方案。

+0

没有帮助我不幸。我以管理员身份运行VS,将UAC降至最低,并仍然有相同的错误。但对你有好处! (Windows 10,尝试与包括iis设置打开和关闭) – ignacy130

0

解决方案我们发现IncludeIisSettings = true并且没有“The”EscapeTextForRegularExpressions“任务的成功构建未给出所需参数”Text“的值。错误是:

  • 在构建服务器上安装Visual Studio(已完成)。
  • 在生成服务器上安装IIS。
  • 在IIS中的默认网站上,为https添加绑定(端口443)并使用由Visual Studio安装的证书(IIS Express Development Certificate)。