如果依赖项已更改,如何防止msbuild生成项目

如果依赖项已更改,如何防止msbuild生成项目,msbuild,build,dependencies,Msbuild,Build,Dependencies,我有两个项目在两个不同的解决方案 一个通过DLL引用引用另一个 例如:MyProjectA通过DLL引用MyprojectB 在ProjectB中,我向类文件添加了一行不相关的代码(即字符串abc=“abc”) 重建ProjectB时,ProjectB.dll被放入ProjectA引用的某个目录中 我对ProjectA不做任何更改,并尝试“构建”ProjectA,它构建并更新DLL。我不希望这种情况发生。 如果我再次在projectA上运行构建,则会跳过构建,因为没有进行任何更改 对依赖项所做的

我有两个项目在两个不同的解决方案

一个通过DLL引用引用另一个

例如:MyProjectA通过DLL引用MyprojectB

在ProjectB中,我向类文件添加了一行不相关的代码(即字符串abc=“abc”) 重建ProjectB时,ProjectB.dll被放入ProjectA引用的某个目录中

我对ProjectA不做任何更改,并尝试“构建”ProjectA,它构建并更新DLL。我不希望这种情况发生。 如果我再次在projectA上运行构建,则会跳过构建,因为没有进行任何更改

对依赖项所做的更改如果不会直接影响从项目a对其进行的调用,则不应影响msbuild实际正在生成项目a这一事实。这导致我们的版本控制/签名出现问题,我们不得不再次向客户端提供所有文件


换句话说,如果我对一个基础项目做了一个小的更改,我应该只需要构建该基础项目并将其DLL重新部署到客户端,但是由于依赖关系的更改,所有项目都会重新构建。这确实令人沮丧,对于那些连接速度慢的人来说,这是一个问题,当我们不得不对一个基本项目进行一个小改动时,他们不得不再次下载所有内容。

您应该将项目B重构为两个类库(DLL)。一个DLL(proj-B-core.DLL),其中包含项目A实际依赖的内容。。。第二个DLL(prod-B-misc.DLL)包含项目a不关心的内容。将项目A更改为引用proj-B-core.dll,您将获得所需的行为

最好的,
/jhd

我不认为这是msbuild的问题。我建议调查一下你的版本控制方法,但是如果没有更多的信息,我真的无法发表评论。在这个特殊的例子中,有一件事可能会有所帮助,那就是使用一个。这样,当只有1个程序集引用发生更改时,就不必重新分发整个应用程序。您只需重新分发新程序集和策略文件。

能否详细说明版本控制/签名问题?重建不应影响签名。我的直觉告诉我msbuild的行为是正确的。我担心的是,如果禁用此行为,当您更改项目B中对项目Ajames有影响的内容时,您会遇到问题,它影响签名的原因是因为正在进行的混淆。它在每一个构建上都会发生变化。看起来,msbuild会将.cs文件和依赖项dll(输入)与输出(dll)进行比较,如果任何输入文件比输出文件新,它会自动构建。这对微软来说是一个可怕的假设。