无法更改visual studio中引用的“复制本地”(您是否缺少using指令或程序集引用?)

时间:2017-09-28 16:09:53

标签: visual-studio visual-studio-2015 nuget

我有一个本地c#项目,我也检查了源代码管理。这个项目建立并运行良好。

当我从源代码控制中克隆项目并在visual studio中重新打开它时,它将无法构建,因为它无法找到Microsoft.ServiceBus.dll中的任何类。我得到例如'找不到类型或命名空间名称'QueueClient'(你是否缺少using指令或汇编引用?)'

源代码控制项目包含与构建本地的相同的packages.config,但在构建后缺少/ bin / Debug /文件夹中的dll。

我看到的一个区别是该dll的引用属性(解决方案资源管理器 - > myproject - >引用 - > Microsoft.ServiceBus)将“复制本地”值设置为false,而在项目中build(我签入的那个)设置为true。但是,在属性窗格中更改它不起作用。当我点击时它会立即翻转。这是问题吗?如果是这样,这个配置位于文件系统的哪个位置? (或者如何更改它以使其保留在该文件中?)

编辑:更多信息: 该解决方案有两个项目:WorkerRole和TestHarness。 两个项目都依赖于服务总线,但是在WorkerRole项目中只有一个packages.config文件,而在克隆的解决方案中,WorkerRole构建正常!那么我怎么做才能让Workers.config出现在WorkerRole上?我想我做了一些稍微不同的事情,让TestHarness在本地项目中构建!!

2 个答案:

答案 0 :(得分:1)

  

无法更改'复制本地'在visual studio中引用(你是否缺少using指令或程序集引用?)

您需要在程序包管理器控制台中使用NuGet命令行

Update-Package -reinstall

强制将包引用重新安装到项目中。

由于您将项目检入源代码管理,因此源代码管理系统的默认行为是Omit NuGet包和源代码管理中的bin文件夹。从源代码管理克隆项目时,新克隆项目中缺少这些文件。所以' Copy Local'值设置为false。虽然Visual Studio将自动恢复nuget包,但NuGet Restore仅恢复packages目录(\ packages文件夹)中的文件,但不会恢复项目中的文件或以其他方式修改项目。

此外,NuGet不会阻止您删除从包中添加的项目,因此很容易无意中修改从包中安装的内容并破坏您的项目

因此,要解决此问题,我们需要使用NuGet命令行Update-Package -reinstall强制从源代码管理中克隆项目并将引用问题重新安装到项目中。有关更多详细信息,请参阅以下链接:

Nuget Packages are there but missing References

答案 1 :(得分:0)

这里有一些事情:

1)Git有一个.gitignore文件,该文件出现在源控制的解决方案文件夹的根目录中。这不包括DLL存储在源代码管理中。这就是你在克隆副本中遗漏DLL的原因。

2)您对Microsoft.ServiceBus的引用似乎是bin文件夹本身,这就是您无法将CopyLocal设置为true的原因。

删除您的Microsoft.ServiceBus引用并将其从源文件夹中添加回来,例如{{1}}(如果您在那里没有看到它,请扫描您的硬盘驱动器以获取源副本)。正确引用后,将Copy Local设置为true。

然后你应该好好去。

相关问题