使用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>
有人可以帮我解决如何在ouput文件夹的bin文件夹中获取这些程序集的信息吗?
答案 0 :(得分:4)
感谢Alexey我找到了我的问题的解决方案,这就是我现在在.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>
答案 1 :(得分:-2)
假设您在项目属性中设置了仅运行此应用程序所需的文件,请确保文件包含在项目中,并确保其构建操作是内容。
http://msdn.microsoft.com/en-us/library/ee942158.aspx#why_dont_all_files_get_deployed