Использование _bin_deployableAssemblies с Visual Studio 2012

В Visual Studio 2010 я использовал папку _bin_deployableAssemblies для включения сторонних сборок, которые должны быть включены в папку bin при сборке и веб-развертывании. Речь идет о тех сторонних сборках, которые необходимы для веб-сайта, но вы не хотите на них ссылаться. Это сработало потрясающе...

Теперь с Visual Studio 2012 он перестал работать... Ну, часть его перестала работать. При сборке содержимое папки _bin_deployableAssemblies копируется в папку bin. Но когда я запускаю webdeploy, например, на свой локальный диск, эти файлы не публикуются в папке bin выходной папки.

Я использую это в своем файле .csproj:

<PropertyGroup>
  <OnAfterCopyAllFilesToSingleFolderForPackage>
    __MoveFilesFromUmbracoSubdirsToBinPackageTemp
  </OnAfterCopyAllFilesToSingleFolderForPackage>
</PropertyGroup>
<Target Name="_CopyBinDeployableAssemblies" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
  <CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')" Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\.svn\**\*">
    <Output ItemName="_binDeployableAssemblies" TaskParameter="Include" />
  </CreateItem>
  <Copy SourceFiles="@(_binDeployableAssemblies)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
<Target Name="__MoveFilesFromUmbracoSubdirsToBinPackageTemp">
  <Message Text="Moving files from bin\umbraco\ and bin\umbraco plugins\ to bin\" Importance="high" />
  <CreateItem Include="$(_PackageTempDir)\bin\umbraco\*.*;$(_PackageTempDir)\bin\umbraco plugins\*.*">
    <Output ItemName="_umbracoItems" TaskParameter="Include" />
  </CreateItem>
  <Move SourceFiles="@(_umbracoItems)" DestinationFolder="$(_PackageTempDir)\bin" />
  <Message Text="Removing bin\umbraco\ and bin\umbraco plugins\ folders" Importance="high" />
  <RemoveDir Directories="$(_PackageTempDir)\bin\umbraco;$(_PackageTempDir)\bin\umbraco plugins" />
</Target>

Может ли кто-нибудь помочь мне, как мне получить эти сборки в папке bin папки вывода?


person kipusoep    schedule 12.09.2012    source источник


Ответы (2)


Благодаря Алексею я нашел решение своей проблемы, это то, что я сейчас использую в своем файле .csproj для поддержки копирования сторонних сборок для Filesystem- и Webdeploy:

<ItemGroup>
    <AvailableItemName Include="ThirdPartyAssemblies">
        <Visible>false</Visible>
    </AvailableItemName>
</ItemGroup>
<Target Name="AfterBuild">
    <Message Text="Build | Copying third party assemblies to output folder ($(OutputPath))" Importance="high" />
    <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" />
</Target>
<Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish">
    <Message Text="Deploy | Copying third party assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" />
    <Copy DestinationFolder="$(_PackageTempDir)\bin\" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" />
</Target>

Из: Цели MSBuild и проблемы Visual Studio 2012

person kipusoep    schedule 25.09.2012

Предполагая, что в свойствах проекта задано значение Только файлы, необходимые для запуска этого приложения, убедитесь, что файлы включены в проект и что их действие сборки — это содержимое.

http://msdn.microsoft.com/en-us/library/ee942158.aspx#why_dont_all_files_get_deployed

person tdykstra    schedule 12.09.2012
comment
Возможно, если в процессе конвертации проекта на 2012 или по какой-то другой причине файлы, скопированные в папку bin, больше не включаются в проект. Критерии, которые я перечисляю, — это те, которые определяют в VS 2012, будут ли файлы скопированы в папку выходного bin. - person tdykstra; 16.09.2012
comment
Цели MsBuild, которые я опубликовал, должны позаботиться о процессе копирования, по крайней мере, в VS2010. Итак, мой вопрос; что изменилось в VS2012 и как это решить. - person kipusoep; 17.09.2012
comment
Кажется, есть изменение, затрагивающее OnAfterCopyAllFilesToSingleFolderForPackage; есть еще один пост SO, который кажется связанным - stackoverflow.com/questions/12520115/ -- я спросил кого-то, кто знает об этом больше, чем я. - person tdykstra; 21.09.2012
comment
Да, я тоже создал эту тему после того, как попробовал другие способы, кроме упомянутых в моем TS, для включения сторонних сборок в Webdeploy. Я с нетерпением жду ответа от «человека, который знает об этом больше, чем вы» ;-) - person kipusoep; 21.09.2012