MSBuild で solidity ソース ファイルをコンパイルできるようにする簡単な拡張機能を作成しています。
私の目標は、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 hereにあります。