2015-11-17 174 views
0

这里有类似的问题,但我已经用尽了我找到的这个问题的每个解决方案。MSBuild失败,缺失参考

我的解决方案在本地编译并运行正常,但是当我检入我的代码并运行MSBuild时,它会失败,并显示错误The type or namespace name 'DbUp' could not be found

DbUp在Nuget上可用,但我必须使用我收到的修改版本,所以我手动将它拖入我的包文件夹中,然后通过浏览到项目中的.dll来引用它。

我首先试图通过删除.dll并尝试再次引用它来解决此问题。然后我删除了整个项目并再次尝试了这个过程。尽管如此,它每次都会在本地编译和运行,但每次检查我的代码并运行MSBuild时都会失败。

我检查了项目文件和参考似乎是有罚款:

<Reference Include="DbUp"> 
    <HintPath>..\packages\dbup\DbUp.dll</HintPath> 
</Reference> 

我不明白的事情是,我会清理我的解决方案,然后重新编译和DbUp.dll是在我的仓。那么为什么MSBuild无法找到参考?

让我知道你是否需要任何额外的信息来帮助。谢谢。

+0

源代码管理下的packages文件夹? –

+0

是的,它是在源代码控制下 – cfly24

回答

0

我假设你在构建服务器上构建它。如果是这种情况,那么问题可能是构建服务器在构建解决方案之前不会恢复NuGet包。

结账后,您可以在生成解决方案之前发出NuGet恢复。您可能需要调整nuget.exe以及解决方案的路径。

nuget.exe restore <YourSolution>.sln 

当构建过程构建您的解决方案时,包应该在那里。

+0

嗯...仍然失败,同样的错误。 – cfly24

+0

如果您完全清理解决方案,同时删除输出bin目录并重命名您的本地包文件夹,它是否会编译?确保您的解决方案已启用恢复软件包。 Visual Studio可能在bin目录中找到dll,这就是它在您的机器上编译的原因。 – JAZ

+0

我一直在做干净和删除斌,但我没有尝试重命名本地包文件夹。我正在使用的'DbUp'版本是一个修改版本,与Nuget不一样。如果我这样做,那么它会不会从Nuget获取版本? – cfly24