我有一个MVC项目作为网络应用程序从Visual Studio发布到Azure。在解决方案中,我有一个项目设置为“插件”,该项目由Web应用程序使用并使用Unity DI安装。在本地这是可行的,但是当我发布天蓝色时,并未部署插件文件。这是我的解决方案和项目结构的设置方式:
Solution MyProject
>nuget
>...
>Plugins
>Plugin.Widget.GoogleAnalytics
>MyProject.Web
>Properties
>References
>...
>Plugins
>bin
>Plugin.Widget.GoogleAnalytics (excluded from project but copied to this directory after project is built above)
>Views
>...
Web.config
如果在编译后删除Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
,则在本地运行,该插件不会出现。如果我将Solution MyProject/Plugins/Plugin.Widget.GoogleAnalytics/bin
的内容复制回Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
,该插件会重新出现。
问题是,当我发布到我的azure Web应用程序时,它不包含Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
。如果我通过FTP从我的计算机上传的目录仍然没有在重新启动应用程序后加载。
我试图在项目中包含Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
,但是由于它应该由DI添加并且在发布后也无法使用,因此会导致编译问题。
是否有一种方法可以在发布过程中包括必要的文件(项目中未包括),以便本地工作在Azure上有效?还是有另一种解决方法。
如果我不检查发布到Remove additional files at destination
上的选项,则在网站尝试加载时通常会引发此错误:
Method not found: 'Microsoft.Practices.Unity.IUnityContainer MyProject.Core.ContainerManager.GetConfiguredContainer()'
我已经尝试调试它,但是这非常困难,因为它仅在azure Web应用程序上发生。
我发现了this个问题,但没有提供有关此问题的任何信息。
编辑 通过执行以下步骤,我能够使插件在Azure上工作。 1)在开发环境中以调试模式在本地运行。 2)发布为Azure,作为调试版本。 3)将FTP Web应用程序的插件目录设为Azure。 4)重新启动azure应用。它以天蓝色运行,但它是调试版本。 5)从本地开发人员环境发布为发布版本。
此后,我就可以发布为发布版本并检查Remove additional files at destination
。这会以天蓝色的方式删除插件。然后,我通过FTP将Web应用程序插件目录设置为Azure,并启动和停止Web应用程序,并且它可以正常工作。也许我可以排除调试步骤,但是现在可以正常工作。
答案 0 :(得分:0)
Heinrich,
请您在下面的步骤中尝试一下,看看它是否有效。
希望有帮助。
MV