声明:我只有两天的经验尝试学习现代MSBuild技术,但多年来一直使用C#和VS,基本上避免了UI提供以外的项目文件细节。
我正在创建实验性DLL,故意与.NET Standard中找到的几个DLL名称相匹配并且在某种程度上接口匹配。例如,自定义的System.IO.dll可能部分匹配.NET的System.IO.dll的公共接口,mscorlib.dll也是如此。
目标是能够创建一个新的C#项目(文件->新建->项目->…),并将其链接到这些替代DLL而不是官方DLL。已经成功地通过csc.exe从命令行完成了这个目标,但还没有在VS内完成。
在VS中使用详细的构建输出冗长度(工具->选项->项目和解决方案->构建和运行)可以显示将.NET中的众多DLL添加到csc.exe命令行中。也许,如果能够防止这种情况发生,一切都会好起来。一次失败的尝试是完全删除<TargetFramework>
。也许在Visual Studio中注册一个“自定义框架”可以允许在csproj中使用自定义值,例如
<TargetFramework>mydotnet</TargetFramework>
?这只是猜测。
看起来MSBuild非常丰富,可以通过多种方式实现这样的事情。我完全愿意学习其中一种或多种技术,因为其中一种可能为未来的构建定制计划提供优势。