microsoft / microsoft/MSBuildSdks
Simple SDK for custom artifacts (EXEs / DLLs) generated by external tool
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C#
- Estrellas
- 508
- Forks
- 94
- Merge medio
- 6 h 40 min
- PR fusionados (30 d)
- 2
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza leyendo el comportamiento del SDK Microsoft.Build.NoTargets en torno a GetTargetPath y el SDK importado manualmente. Define cómo deben funcionar los targets mínimos de Build y Clean y cómo los archivos generados, como DLLs, PDBs y otros artefactos relativos, se propagan a través del wrapper de C# hasta el directorio de salida final de FooApp. Se considera terminado cuando una herramienta externa de Rust, Zig o similar puede compilar y limpiar artefactos, mientras los proyectos referenciados los copian transitivamente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp, rust
- Área
- build-system
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100