4

Visual Studio 2010では、_bin_deployableAssembliesフォルダーを使用して、ビルドおよびWeb展開時に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フォルダーにそれらのアセンブリを取得する方法を教えてもらえますか?

4

2 に答える 2

4

Alexeyのおかげで、問題の解決策が見つかりました。これは、ファイルシステムおよびWebdeployのサードパーティアセンブリのコピーをサポートするために、現在.csprojファイルで使用しているものです。

<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ターゲットとVisualStudio2012の問題

于 2012-09-25T09:17:46.653 に答える
-2

プロジェクトプロパティにこのアプリケーションセットを実行するために必要なファイルのみがあると仮定して、ファイルがプロジェクトに含まれていること、およびそれらのビルドアクションがコンテンツであることを確認してください。

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

于 2012-09-12T22:33:51.117 に答える