Dot-Net
dotnet publish 包含額外文件
我有一個 netcore 應用程序取決於我的自定義項目。因為我不能直接引用它,所以我編寫了將文件複製到輸出的 postbuildevents:
xcopy "$(SolutionDir)Ethereum.Contracts\bin\$(ConfigurationName)\*.abi" "$(TargetDir)" /Y /I xcopy "$(SolutionDir)Ethereum.Contracts\bin\$(ConfigurationName)\*.bin" "$(TargetDir)" /Y /I當我建構和執行項目時它工作正常,但是在執行
publish命令時它不包含這些文件。如何做呢?我也嘗試過這種方法,但
AddPayloadsFolder沒有被呼叫。我的
csproj:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\..\Dependencies\Dependencies.csproj" /> </ItemGroup> <ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="log4net.config"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> <Target Name="PostBuild" AfterTargets="PostBuildEvent"> <Exec Command="xcopy "$(SolutionDir)Ethereum.Contracts\bin\$(ConfigurationName)\*.abi" "$(TargetDir)" /Y /I


xcopy "$(SolutionDir)Ethereum.Contracts\bin\$(ConfigurationName)\*.bin" "$(TargetDir)" /Y /I" /> </Target> <Target Name="AddPayloadsFolder" AfterTargets="AfterPublish"> <Exec Command="xcopy "$(TargetDir)\*.abi" "$(PublishDir)" /Y /I


xcopy "$(TargetDir)\*.bin" "$(PublishDir)" /Y /I" /> </Target> </Project>
啟動
dotnet publish命令時,$(SolutionDir)未定義宏。結果xcopy以不正確的源路徑啟動。此處描述了缺少解決方案宏的問題,它仍處於打開狀態。我不確定它是否會被修復,因為
$(SolutionDir)它是特定於 IDE 的宏。要解決您的問題,您可以通過 switch將
$(SolutionDir)宏的值傳遞給命令:dotnet publish``/pdotnet publish -c Release -r win-x64 /p:SolutionDir=“D:\projects\SolutionDir”
您還應該在
$(SolutionDir)宏之後添加反斜杠:<Target Name="PostBuild" AfterTargets="PostBuildEvent"> <Exec Command="xcopy "$(SolutionDir)\Ethereum.Contracts\bin\$(ConfigurationName)\*.abi" "$(TargetDir)" /Y /I


xcopy "$(SolutionDir)\Ethereum.Contracts\bin\$(ConfigurationName)\*.bin" "$(TargetDir)" /Y /I" /> </Target>更新(關於
AddPayloadsFolder目標):
AddPayloadsFolder目標定義為<Target Name="AddPayloadsFolder" AfterTargets="AfterPublish">未執行,因為 for 的正確值為
AfterTargetsisdotnet publish,PublishnotAfterPublish。我還沒有找到關於這個事實的明確文件,但是在這個問題中提到了它。還可以考慮用多個
xcopy命令替換由換行符分隔的多個命令。當我最終執行目標時,我收到了一個由附加到命令行的分隔符AddPayloadsFolder引起的錯誤。\r總結以上所有,這裡有調整
PostBuild和AddPayloadsFolder目標:<Target Name="PostBuild" AfterTargets="PostBuildEvent"> <Exec Command="xcopy "$(SolutionDir)\Ethereum.Contracts\bin\$(ConfigurationName)\*.abi" "$(TargetDir)" /Y /I" /> <Exec Command="xcopy "$(SolutionDir)\Ethereum.Contracts\bin\$(ConfigurationName)\*.bin" "$(TargetDir)" /Y /I" /> </Target> <Target Name="AddPayloadsFolder" AfterTargets="Publish"> <Exec Command="xcopy "$(TargetDir)*.abi" "$(PublishDir)" /Y /I" /> <Exec Command="xcopy "$(TargetDir)*.bin" "$(PublishDir)" /Y /I" /> </Target>