如何部署具有多个区域的asp.net mvc 4应用程序

时间:2014-05-01 06:37:57

标签: c# asp.net asp.net-mvc asp.net-mvc-4 web-deployment

我按照this文章制作了可插拔的asp.net mvc4应用程序

但在部署应用程序时遇到问题。在我的解决方案中, MainProj 是主项目,其中所有其他项目都在区域文件夹中。每个项目都有它的模型,视图和控制器。我已经在 MainProj 中提供了所有子项目(区域文件夹中的项目)的参考。现在,当尝试部署 MainProj 时,它只发布带有视图的主项目(在本例中为MainProj),区域文件夹中的项目未部署(例如:Cart,CRM)。即使我在主项目(MainProj)中添加区域(ex CRM)项目的引用,也只有区域项目的ddl(ex CRM)部署在bin文件夹中,区域中没有项目视图(CRM)部署。什么出错了。

以下是解决方案的结构:

enter image description here

这是我的原始文件夹结构。

enter image description here

然而,当我在visual studio中以调试模式运行我的项目时,该应用程序运行得非常好。所以我点击了屏幕底部系统托盘中的iis express图标,发现visual studio正在为每个项目托管不同的网站。

enter image description here

有些类似的答案发现here但在我的案例中没有起作用。 请让我知道我错过了什么或做错了什么。部署此类应用程序的正确方法是什么。 提前谢谢。

3 个答案:

答案 0 :(得分:3)

终于解决了这个问题。 将解决方案中所有项目的引用添加到MainProj中。 然后首先在发布文件夹中部署主项目( MainProj )。 所以目录如下:

  • 发布
    • MainProj

然后手动创建文件夹" 区域"在发布文件夹

  • 发布
    • MainProj
    • 领域

然后为" 区域"区域内的每个项目手动创建文件夹。文件夹:

  • 发布
    • MainProj
      • CRM
      • ....
      • ....
      • 管理
      • 客户
      • 店面

最后,逐个手动部署(发布)各个子项目(区域内的项目)。防爆。 CRM部署在CRM文件夹中。

多数民众赞成...... 我的应用程序运行正常。

为每个项目创建发布配置文件,现在我可以随时将任何项目部署到各自的位置,使每个开发人员能够独立地在任何单个项目上工作,并将他们的项目(模块)部署到指定的发布环境没有任何依赖的位置。

答案 1 :(得分:0)

打开您的主项目.csproj文件并找到此行

    <FilesToIncludeForPublish>AllFilesInProjectFolder</FilesToIncludeForPublish>

并在Prefer32Bit节点

之后添加以下行
itextsharp

保存并发布。

答案 2 :(得分:0)

按照Saurabh Palatkar的回答,然后自动部署Areas文件夹,将所有视图添加到csproj。

在VS之外打开master .csproj文件,并在Project内部和最后添加以下XML。 (就在关闭/项目之前)。

<Target Name="CustomDeployAreas">
    <ItemGroup>
        <AreasFiles Include="$(MSBuildProjectDirectory)\Areas\**" />
        <FilesForPackagingFromProject Include="%(AreasFiles.Identity)">
            <DestinationRelativePath>Areas\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
        </FilesForPackagingFromProject>
    </ItemGroup>
</Target>
<PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
        CustomDeployAreas;
        $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
        CustomDeployAreas;
        $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>