MSBuild 目标和 Visual Studio 2012 问题

标签 msbuild visual-studio-2012 msbuild-task webdeploy msbuild-target

我很难使用 Visual Studio 2012 UI 通过 Webdeploy 部署我的第三方非引用程序集。
我有一个名为“库”的文件夹,其中包含一些程序集。
通过 *.csproj 文件中的以下内容,我可以将构建操作设置为“ThirdPartyAssemblies”:

<ItemGroup>
  <AvailableItemName Include="ThirdPartyAssemblies">
    <Visible>false</Visible>
  </AvailableItemName>
</ItemGroup>
<Target Name="AfterBuild">
  <Message Text="Build | Third party assemblies" Importance="high" />
  <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" />
</Target>

这很好用;当我构建时,程序集被复制到 bin 文件夹的根目录:-)
现在我遇到了一个问题:我无法通过 Webdeploy 将这些文件发布到服务器。
我已经尝试了很多东西,似乎我找不到适合此任务的 MSBuild 目标...
使用 Visual Studio 2010 我可以使用这个:
<Target Name="MyTargetName">
  <Message Text="Deploy | Third party assemblies" Importance="high" />
  <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" />
</Target>
<PropertyGroup>
  <OnAfterCopyAllFilesToSingleFolderForPackage>
    MyTargetName
  </OnAfterCopyAllFilesToSingleFolderForPackage>
</PropertyGroup>

问题是; OnAfterCopyAllFilesToSingleFolderForPackage不再调用目标:-/

深入挖掘后C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets' file, I've also tried 'OnAfterCopyAllFilesToSingleFolderForMsdeploy ,但我就是无法让它工作。

谁能告诉我可以使用什么目标将这些程序集复制到 Package 文件夹/带有 Webdeploy 的服务器?

为什么 Visual Studio 2012 不将完整的 bin 文件夹复制到 Package 文件夹?

最佳答案

感谢 Alexey,我找到了问题的解决方案,这就是我现在在我的 .csproj 文件中使用的内容,以支持复制文件系统和 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 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520115/

相关文章:

asp.net - 如何将最新的 TFS 变更集编号插入 aspx 页面?

msbuild - 如何将 MSBuild .proj 文件添加到我的解决方案中?

build - 确认 <UsingTask> 声明是正确的

c++ - visual studio编译器如何指定构建cpp的包含路径

visual-studio-2010 - 像在 AfterBuild 中一样实现 BeforePublish

msbuild - Team City 7 在项目中找不到 DLL

visual-studio-2012 - 如何查看来自 Team Foundation Service 中早期代码审查的注释?

c# - 使用集合时如何删除ListView中的元素?

msbuild - 如何使 MSBuild 构建在 csproj 构建 sln 中指定的自定义目标?

msbuild - MsBuild:获取目标的当前目录