【问题标题】:How to Deploy asp.net mvc 4 application having multiple Areas如何部署具有多个区域的 asp.net mvc 4 应用程序
【发布时间】:2014-05-01 06:37:57
【问题描述】:

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

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

解决方案的结构如下:

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

但是,当我在 Visual Studio 中以调试模式运行我的项目时,该应用程序运行得非常好。所以我点击屏幕底部系统托盘中的 iis express 图标,观察到 Visual Studio 为每个项目托管不同的站点。

here 找到了一些类似的答案,但在我的情况下不起作用。 请让我知道我错过了什么或做错了什么。部署此类应用程序的正确方法是什么。 提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    • 发布
      • 主项目

    然后在发布文件夹中手动创建文件夹“Areas

    • 发布
      • 主项目
      • 地区

    然后为“Areas”文件夹内的区域中的每个项目手动创建文件夹:

    • 发布
      • 主项目
      • 区域
        • 购物车
        • 客户关系管理
        • ....
        • ....
        • 管理员
        • 客户
        • 店面

    最终手动部署(发布)每个子项目(区域内的项目)在各自的文件夹中。前任。 CRM 部署在 CRM 文件夹中。

    就是这样…… 我的应用运行良好。

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

    【讨论】:

    • 您是否找到任何其他方法将这些区域文件夹包含在已发布的包中?请回复。
    • @Yoda 还没有。这是我找到的唯一方法。您在使用这种方法时遇到了什么问题?
    【解决方案2】:

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

      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
    

    并在 Prefer32Bit 节点之后添加以下行

        <FilesToIncludeForPublish>AllFilesInProjectFolder</FilesToIncludeForPublish>
    

    保存并发布。

    【讨论】:

      【解决方案3】:

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

      在 VS 外部打开主 .csproj 文件并在 Project 内部和末尾添加以下 XML。 (那是在关闭 /Project 之前)。

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-31
        • 2014-11-12
        • 1970-01-01
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-07-16
        • 2015-05-26
        相关资源
        最近更新 更多