我有一个MVC项目从Visual Studio作为Web应用程序发布到Azure。在解决方案中,我将项目设置为“插件”,Web应用程序使用该插件并使用Unity DI进行安装。在本地这是有效的,但是当我发布到azure时,插件文件没有被部署。这就是我的解决方案和项目结构的设置方式:
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应用程序时,它不包括Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
。如果我从我的计算机上FTP该目录仍然没有在重新启动应用程序后加载它。
我试图在项目中包含Solution MyProject/MyProject.Web/Plugins/Plugin.Widget.GoogleAnalytics
,但它会导致编译问题,因为它应该由DI添加,并且在发布后也不起作用。
有没有办法在发布期间包含必要的文件(不包括在项目中),那么在本地工作的是什么?或者还有另一种方法可以解决这个问题。
如果我没有检查发布到Remove additional files at destination
的选项,它通常会在网站尝试加载时抛出此错误:
Method not found: 'Microsoft.Practices.Unity.IUnityContainer MyProject.Core.ContainerManager.GetConfiguredContainer()'
我试图调试它,但它很难,因为它只发生在天蓝色的网络应用程序上。
我发现this问题,但它没有提供任何有关此问题的信息。
编辑我能够通过以下步骤让插件在azure上工作。 1)在调试模式下在本地运行dev环境。 2)发布到azure作为调试版本。 3)FTP web应用程序插件目录到azure。 4)重启azure应用程序。它运行在azure中,但它是一个调试版本。 5)从本地开发环境发布作为发布版本。
在此之后,我能够发布为发布版本并检查Remove additional files at destination
。这将删除天蓝色的插件。然后我将web应用程序插件目录FTP到azure并启动和停止Web应用程序,它的工作原理。也许我可以采取调试步骤,但这现在正在运行。
亨利,
你可以试试下面的步骤,看看它是否有效。
希望能帮助到你。
MV