我发生了一些奇怪的事情。我使用web.config转换文件,当尝试发布到本地iis作为Web部署时,我收到以下错误:
错误1160“ParameterizeTransformXml”任务意外失败。 System.UriFormatException:无效的URI:URI为空。在 System.Uri.CreateThis(String uri,Boolean dontEscape,UriKind uriKind) 在System.Uri..ctor(String uriString)at Microsoft.Web.Publishing.Tasks.ParameterizeTransformXml.Execute()
在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost,ItemBucket bucket,TaskExecutionMode howToExecuteTask, 布尔和放大器; taskResult)
在我将一些图像文件添加到项目之前它确实有效,并且当转换文件基本上仍然相同时,它在调试模式下工作。
有没有人遇到这个并知道可能导致这种情况的原因?
这是在visual studio 2010和framework 4.0,Windows 7下。
答案 0 :(得分:4)
我有同样的错误消息。它发生在我复制到web.config的新版本后,有人在其他环境中手动进行了很多更改。
我使用准二分搜索发现了这个问题。即使用Beyond Compare,我将复制前半部分的更改并查看它是否仍然生成错误。如果确实如此,那么我会重新开始,只复制第一季的变化等......
我的错误是以下设置:
<setting name="InvalidItemNameChars" value="\/:?"<>|[]" />
注意“大于”符号!
我通过将设置更改为:
来修复它<setting name="InvalidItemNameChars" value="\/:?"<>|[]" />
答案 1 :(得分:1)
某些东西可能编辑了一个配置文件,主要是web.config(最有可能)或转换,也可能将编码格式从ANSI切换到UTF8或类似,并与转义字符混淆。
我在将当前版本和旧版本保存为文件并使用超出比较数据比较时才发现它。请注意,之前使用复制粘贴到每个比较窗口的比较没有显示问题,因此请使用文件进行比较。
答案 2 :(得分:0)
使用Windows换行符将文件编码更改为UTF8。这可以通过访问File > Advanced Save Options
来完成。