使用Visual Studio发布Azure Web应用-不包括所有文件

时间:2019-02-20 01:55:43

标签: asp.net-mvc visual-studio azure unity-container azure-web-app-service

我有一个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应用程序,并且它可以正常工作。也许我可以排除调试步骤,但是现在可以正常工作。

1 个答案:

答案 0 :(得分:0)

Heinrich,

请您在下面的步骤中尝试一下,看看它是否有效。

  • 确保将构建操作设置为“内容”,它们将被部署。
  • 尝试以发布模式进行部署。

希望有帮助。

MV