我仍然不知道为什么,但毕竟 VS 2010 内置方法“Web Deploy”对我不起作用。我刚刚放弃并编写了自己的部署批处理脚本,该脚本构建了我的应用程序并将所有相关数据复制到 IIS。
我想在这里为遇到同样问题的每个人发布这个批处理脚本。在使用这个脚本之前,有一些事情要记住:
1.)将 Local Copy = True 设置为 Silverlight Web 项目中所有引用的 DLL。
2.)每个 WCF RIA 服务都需要一个单独的 *.svc 文件。svc 文件需要包含完整的服务命名空间+名称以及用于实例化服务的工厂类。该文件的内容可能如下所示:
<%@ServiceHost language="C#" Debug="true" Service="Fullnamespace.Servicename" Factory="System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory"%>
我的情况是我所有的 svc 文件都在 zhClientBin 文件夹中。请记住,您必须自己编写它们并设置 Locaol Copy = True。另请记住,您必须在 SL 客户端中调用正确的 svc 文件。
这可能看起来像这样:
LoginContext _loginContext = new LoginContext(Globals.URI.getServiceUri("http://yourdomain/ClientBin/YourService.svc"));
LoadOperation<ServiceLog> _loadOperation = _loginContext.Load<ServiceLog>(_loginContext.LogInQuery(user.EMail, user.Passwort), LoginCallBack, true);
3.以下批处理脚本构建您的应用程序。然后它将文件复制到您的 IIS。对于调试问题,pdb 文件包含在 xap 文件中。请记住,批处理中的所有路径都与我的系统相关。你当然必须改变它们。也许您以此为灵感来构建您自己的脚本。
请非常小心此脚本,如果您不熟悉批处理语言,请不要使用它。它会在您的硬盘上删除并创建文件夹。使用风险自负
SET DestPath=D:\Sources Internet\www.MyDomain.de\%2
SET DevelopmentPath=D:\Sources\MyDomain\MyDomain.Web\%3
RD /S /Q "%DestPath%"
MKDIR "%DestPath%"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "D:\Sources\MyDomain\MyDomain\MyDomain.sln" /p:Configuration=Debug;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir="D:\Sources Internet\www.MyDomain.de"
DEL "%DestPath%\Web.config" /s /q
COPY "%DevelopmentPath%\Web.config" "%DestPath%\Web.config"
COPY "D:\Sources\MyDomain\MyDomain\Bin\Debug\MyDomain.pdb" "D:\Sources Internet\www.MyDomain.de\ClientBin\MyDomain.pdb"
CD /D D:\Sources Internet\www.MyDomain.de\ClientBin
REN *.xap *.rar
SET WINRAR="C:\Program Files\WinRAR"
%WINRAR%\WinRAR.exe a MyDomain MyDomain.pdb
DEL MyDomain.pdb
REN *.rar *.xap
COPY "D:\Sources Internet\www.MyDomain.de\ClientBin\MyDomain.xap" "D:\Sources Internet\www.MyDomain.de\bin\MyDomain.xap"
请非常小心此脚本,如果您不熟悉批处理语言,请不要使用它。它会在您的硬盘上删除并创建文件夹。使用风险自负
使用这种方法,我不再需要 VS 2010 Web 部署,而且我还可以在 IIS 7.5 上运行和调试我的 SL 应用程序。