我正在编写一个简单的扩展来允许 MSBuild 编译可靠源文件。
我的目标是当我solidproj
被编译时,它运行特定的可执行文件,该可执行文件会生成多个文件bin
,这些abi
文件应该被复制到目标目录。这听起来很容易,但实际上并非如此。
我目前有以下目标:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.CurrentVersion.targets" />
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile">
<Exec Command='$(RunCommand) "-o @(OutDir) @(SolCompile)" $(RunCommandArguments)' WorkingDirectory="$(RunWorkingDirectory)" />
</Target>
</Project>
它几乎可以工作,只是它期望单个exe
文件被编译
<!-- Copy the build product (.dll or .exe). -->
<Copy
SourceFiles="@(IntermediateAssembly)"
DestinationFolder="$(OutDir)"
SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)"
UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)"
Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'"
>
<Output TaskParameter="DestinationFiles" ItemName="MainAssembly"/>
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
错误 MSB3030 无法复制文件“obj\Debug\Solidity9.exe”,因为找不到它。Solidity9 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets 4118
我如何要求它将此特定扩展的所有内容复制到输出中?
整个项目在 github上。