У меня есть решение, которое включает слабосвязанные проекты с приложением ASP.Net MVC. Я установил вывод всех проектов в папку «MvcProject \ bin». Итак, мне нужно очистить / перестроить решение, прежде чем я смогу запустить свое веб-приложение. Проблема в том, что когда я публикую это в Azure или в локальной системе, он не будет включать все библиотеки DLL проекта (и его зависимые библиотеки DLL, он будет включать только MvcProject и его зависимые библиотеки DLL). Есть ли способ сообщить VS (или msbuild) очистить / перестроить решение и включить все связанные библиотеки DLL проекта, выход которых установлен на 'MvcProject \ bin'

0
Imran Qadir Baksh - Baloch 12 Авг 2014 в 16:26
Облачные проекты в MSBuild рекурсивно извлекают все зависимости вашего MvcProject. Можете ли вы добавить свои другие «слабосвязанные» проекты в ссылочные проекты MvcProject? Это решит вашу проблему.
 – 
seva titov
12 Авг 2014 в 19:50
@SevaTitov, нет, не могу. Это проблема.
 – 
Imran Qadir Baksh - Baloch
12 Авг 2014 в 22:17

1 ответ

Лучший ответ

Вот что я сделал. Прежде всего отредактировал все мои проекты библиотеки классов csproj файл OutPath, чтобы,

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    ..................................
    <OutputPath>bin\Debug\</OutputPath>
    ..................................


<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    ..................................
    <OutputPath>bin\Release\</OutputPath>
    ..................................

Затем добавьте это в нижнюю часть файла csproj моего приложения MVC (перед </Project>),

  <Target Name="AfterBuild">
    <ItemGroup>
      <_CustomFiles Include="..\Project1\bin\$(Configuration)\**\*;..\Project2\bin\$(Configuration)\**\*" />
        ................................................................
    </ItemGroup>
    <Copy SourceFiles="@(_CustomFiles)" DestinationFiles="@(_CustomFiles->'bin\%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
  </Target>

Наконец, добавьте это в мой Azure.pubxml (вы можете найти его в Properties/PublishProfiles) внизу файла (перед </Project>),

  <Target Name="CustomCollectFiles">
    <ItemGroup>
         <_CustomFiles Include="..\Project1\bin\$(Configuration)\**\*;..\Project2\bin\$(Configuration)\**\*" />
            ................................................................
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>
0
Imran Qadir Baksh - Baloch 13 Авг 2014 в 19:51