要在发布版本后复制不同位置的文件,我尝试了以下操作:
编辑csproj文件并添加此代码,将dll复制到相对路径的bin中。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\*project*\**\*.dll" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
这绝对没问题。我只是想知道是否可以使用post build事件来完成 像这样......(这不起作用)。
if $(ConfigurationName) == Release xcopy /y "$(ProjectDir)$(OutDir)$(TargetFileName)" "$(SolutionDir)$(OutDir)"
第一种方式是在VS2010中单击发布的“唯一方法”吗?值得关注的是,在VS2010中,csproj文件中的更改不会显示在任何地方。
答案 0 :(得分:7)
是的,您可以在不使用 AfterBuild 目标和Copy task进行黑客攻击的情况下执行此操作:
<Target Name="AfterBuild">
<ItemGroup>
<_CustomFiles Include="..\**\*.dll" />
</ItemGroup>
<Copy
SourceFiles="@(_CustomFiles)"
DestinationFiles="@(_CustomFiles->'bin\%(Filename)%(Extension)')"
SkipUnchangedFiles="true" />
</Target>
答案 1 :(得分:0)
这也适用于不同的Visual Studio版本,并且可以维护。
<Target Name="CustomFolderDeploy" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish">
<PropertyGroup>
<CustomFolder>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\Lib\CustomFolder'))</CustomFolder>
</PropertyGroup>
<CreateItem Include="$(CustomFolder)\*.*">
<Output TaskParameter="Include" ItemName="CustomFiles" />
</CreateItem>
<Copy SourceFiles="@(CustomFiles)" DestinationFolder="$(MSBuildProjectDirectory)\obj\$(Configuration)\Package\PackageTmp\bin" SkipUnchangedFiles="True" ContinueOnError="False" />
</Target>