MsBuild:不要编译引用的项目

Dan*_*lba 3 .net c# msbuild nant compilation

我有以下项目结构:

SLN
    libA
    libB (references libA)
    exeWPF (references libA and libB)
Run Code Online (Sandbox Code Playgroud)

我使用NAnt用csc编译libA和libB,但我不能将csc与WPF项目一起使用,XAML目标无法用NAnt编译,所以我在NAnt项目中使用了MSBuild任务.

问题是当我启动一个完整的构建时,libA和libB已经由NAnt,然后当启动MSBuild任务时,再次编译libAlibB库,因为csproj文件引用了libA和libB项目.exeWPF

替代方案可以是引用libA,libB作为项目,我可以在exeWPFcsproj文件中将它们作为dll引用.问题是在这种情况下我松开了代码并导航到引用.

对我来说,解决方案是能够从MSBuild任务中指定对MsBuild项目的引用.

sev*_*tov 6

您可以exeWPF像这样构建项目

msbuild exeWPF.csproj /p:BuildProjectReferences=false
Run Code Online (Sandbox Code Playgroud)

属性BuildProjectReferences将阻止MSBuild构建引用,它将被强制使用预构建的程序集来提取引用的元数据,如果引用的程序集不存在,它将失败.