Msbuild 生成时将二进制文件复制到错误文件夹

Msbuild 生成时将二进制文件复制到错误文件夹,msbuild,appharbor,post-build-event,libgit2sharp,Msbuild,Appharbor,Post Build Event,Libgit2sharp,最近的libgit2sharpnuget使用了一个新的Nuget特性,允许您在Nuget中包含一段构建脚本。其目的是将本机dll复制到bin文件夹的子文件夹,如下所示: <ItemGroup> <None Include="$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\amd64\git2-e0902fb.dll"> <Link>NativeBinaries

最近的libgit2sharpnuget使用了一个新的Nuget特性,允许您在Nuget中包含一段构建脚本。其目的是将本机dll复制到bin文件夹的子文件夹,如下所示:

    <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)\..\..\lib\net40\NativeBinaries\amd64\git2-e0902fb.dll">
        <Link>NativeBinaries\amd64\git2-e0902fb.dll</Link>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>...
您可以看到目标文件夹总是
/bin
——我认为这是Microsoft.WebApplication.targets文件中的一个错误(我无法在目标计算机上控制它)

是否有一个简单的修复程序,或者我是否应该在后期构建事件中恢复到脚本(我必须随每个新版本进行更新)?

如下所述:

AppHarbor构建项目的方式触发了旧的
\u CopyWebApplicationLegacy
目标,而这基本上被打破了。它会将使用“复制到输出目录”属性的所有文件直接放入输出目录,而不考虑相对的文件夹结构,从而弄乱它们。它也不会运行您可能有的任何web.config转换

通过将以下内容添加到项目文件中,可以使项目使用较新的
\u CopyWebApplication
目标:

<UseWPP_CopyWebApplication>True</UseWPP_CopyWebApplication>
<PipelineDependsOnBuild>False</PipelineDependsOnBuild>
True
假的

我不确定的是,AppHarbor是否有理由不希望您使用较新的复制目标,而不是旧的损坏目标。

请在“跟踪器”中打开一个问题?
<UseWPP_CopyWebApplication>True</UseWPP_CopyWebApplication>
<PipelineDependsOnBuild>False</PipelineDependsOnBuild>