Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何部署具有多个区域的asp.net mvc 4应用程序_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Web Deployment - Fatal编程技术网

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

C# 如何部署具有多个区域的asp.net mvc 4应用程序,c#,asp.net,asp.net-mvc,asp.net-mvc-4,web-deployment,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Web Deployment,我跟随文章制作了可插拔的asp.NETMVC4应用程序 但在部署应用程序时面临问题。在我的解决方案中,MainProj是主项目,与所有其他项目一样,都位于区域文件夹中。每个项目都有其模型、视图和控制器。我已经给出了MainProj中所有子项目(区域文件夹中的项目)的参考。现在,当尝试部署MainProj时,它只发布带有视图的主项目(在本例中为MainProj),区域文件夹中的项目没有部署(例如:购物车、CRM)。即使我在主项目(MainProj)中添加了区域内项目(ex-CRM)的引用,也只有区

我跟随文章制作了可插拔的asp.NETMVC4应用程序

但在部署应用程序时面临问题。在我的解决方案中,MainProj是主项目,与所有其他项目一样,都位于区域文件夹中。每个项目都有其模型、视图和控制器。我已经给出了MainProj中所有子项目(区域文件夹中的项目)的参考。现在,当尝试部署MainProj时,它只发布带有视图的主项目(在本例中为MainProj),区域文件夹中的项目没有部署(例如:购物车、CRM)。即使我在主项目(MainProj)中添加了区域内项目(ex-CRM)的引用,也只有区域内项目(ex-CRM)的ddl被部署在bin文件夹中,而没有区域内项目(CRM)的视图被部署。出什么事了

以下是解决方案的结构:

这是我原来的文件夹结构

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

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

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

  • 发表
    • 主要项目
然后在发布文件夹中手动创建文件夹“区域

  • 发表
    • 主要项目
    • 区域
然后在“区域”文件夹中为每个项目手动创建文件夹:

  • 发表
    • 主要项目
    • 区域
      • 推车
      • 客户关系管理
      • 管理员
      • 顾客
      • 店面
最后,在各自的文件夹中逐个手动部署(发布)每个子项目(区域内的项目)。例如,CRM部署在CRM文件夹中

就这样。。。。 我的应用程序运行得非常好


为每个项目创建了发布配置文件,现在我可以随时将任何项目部署到各自的位置,使每个开发人员能够独立地处理任何单个项目,并将其项目(模块)部署到发布环境中的指定位置,而无需任何依赖关系

打开主项目.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>

pdbonly
真的
垃圾箱\
痕迹
促使
4.
假的

并在Prefer32Bit节点后添加以下行

    <FilesToIncludeForPublish>AllFilesInProjectFolder</FilesToIncludeForPublish>
AllFilesInProjectFolder

保存并发布。

遵循Saurabh Palakar的回答,然后进入auto deploy Areas文件夹,将所有视图添加到csproj

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


区域\%(递归目录)%(文件名)%(扩展名)
海关区域;
$(将所有文件复制到SingleFolderForpPackageDependson);
海关区域;
$(将所有文件复制到SingleFolderForpPackageDependson);

您是否找到其他方法将这些区域文件夹包含在已发布的软件包中?请回复。@Yoda还没有。这是我找到的唯一方法。这种方法面临什么问题?
<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>