Tuy nhiên, một câu trả lời khác ...
Trong trường hợp của tôi, tôi có một dự án Visual Studio 2017 nhắm mục tiêu cả .Net Standard 1.3 và .Net Framework 2.0. Điều này đã được chỉ định trong tệp .csproj như sau:
<TargetFrameworks>netstandard1.3;net20</TargetFrameworks>
Tôi cũng có một dòng lệnh sau khi xây dựng sự kiện như thế này:
copy "E:\Yacks\YacksCore\YacksCore\bin\net20\Merlinia.YacksCore.dll" "E:\Merlinia\Trunk-Debug\Shared Bin\"
Nói cách khác, tôi đang cố gắng sao chép .Net Framework .dll được tạo bởi bản dựng sang một vị trí thay thế.
Điều này không thành công với lỗi này khi tôi tạo lại:
MSB3073 The command "copy "E:\Yacks\YacksCore\YacksCore\bin\net20\Merlinia.YacksCore.dll" "E:\Merlinia\Trunk-Debug\Shared Bin\"" exited with code 1.
Sau nhiều lần thất vọng, cuối cùng tôi đã xác định rằng điều đang xảy ra là Rebuild đã xóa tất cả các tệp đầu ra, sau đó thực hiện xây dựng cho .Net Standard 1.3, sau đó cố gắng chạy dòng lệnh sự kiện sau xây dựng, lỗi này không thành công vì tệp được sao chép vẫn chưa được xây dựng.
Vì vậy, giải pháp là thay đổi thứ tự xây dựng, tức là xây dựng cho .Net Framework 2.0 trước, sau đó cho .Net Standard 1.3.
<TargetFrameworks>net20;netstandard1.3</TargetFrameworks>
Điều này hiện hoạt động, với một trục trặc nhỏ là dòng lệnh sự kiện sau xây dựng đang được chạy hai lần, vì vậy tệp được sao chép hai lần.