microsoft / microsoft/MSBuildSdks

Simple SDK for custom artifacts (EXEs / DLLs) generated by external tool

Đang mở
#653 0 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
C#
Star
508
Fork
94
Merge trung bình
6 giờ 40 phút
Pull request đã merge (30 ngày)
2

Mô tả

I'm trying to use the Microsoft.Build.NoTargets SDK to generate a project that builds a Rust cdylib (.dll / .so) and produces the following artifacts:

  • foo.dll
  • foo.pdb
  • ...

What I'd like is to have a way to specify all of this in the most elegant way (not just tied to Rust) but the Microsoft.Build.NoTargets SDK explicitly disables the GetTargetPath target (and other stuff) and it makes you import the SDK manually (instead of just using <Project Sdk="...">) because it's intended to be a way to just launch some tools that produce no artifacts / assemblies.

So it would be nice to have a minimal SDK that just invokes two main targets (Build and Clean) and a target that allows specifying which generated files are to be copied transitively (with a folder structure relative from the build directory, like BUILD/res/foo.bin).

My concrete goal is to have a Rust (or Zig / whatever) native DLL project (libfoo-rs) that is referenced by a C# wrapper project (LibFoo) that gets used by a C# Exe project (FooApp) such that when running FooApp in VS, everything gets copied in the final Output directory.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách đọc hành vi của SDK Microsoft.Build.NoTargets xung quanh GetTargetPath và SDK được import thủ công. Xác định các target Build và Clean tối thiểu cần hoạt động như thế nào, cũng như cách các tệp được tạo, chẳng hạn như DLLs, PDBs và các artifact tương đối khác, được truyền qua C# wrapper vào thư mục đầu ra cuối cùng của FooApp như thế nào. Được xem là hoàn thành khi một công cụ bên ngoài viết bằng Rust, Zig hoặc tương tự có thể build và clean các artifact, trong khi các project được tham chiếu sao chép chúng theo tính bắc cầu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
csharp, rust
Lĩnh vực
build-system
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.