2017-01-02 42 views
1

我有一个包含56个项目的小型解决方案。有时候,当将回购单克隆到新的工作区并从头开始重建时,我会遇到奇怪的问题。构建一个具有多个依赖关系的大型解决方案失败,除非手动构建

它是这样的:

我加载签出解决方案文件,并得到希望我恢复的NuGet的库约20堆叠对话盒。好吧,我这样做(但笑一点关于堆叠对话框)

我做构建清洁溶液

我做内置生成解决方案

我得到的类型CS0006元数据的63个错误“MySolution \ MyProject \ bin \ Debug \ MyProj.dll“找不到。这些错误中引用了大约4-5个DLL。

然后,我通过右键单击并重建来建立这些“手工”,最终我可以构建整个项目。显然,存在一些依赖性问题,但是我应该如何调查它,因为它应该“自动地”工作?我几乎更喜欢自己创建构建文件....

任何想法?

+1

对于未找到的每个“MyProj.dll”,单击未构建的项目并添加对“MyProj”的引用,这应该设置正确的构建顺序。假设它们被设置为在您的配置中构建。 – pstrjds

+0

您需要将其他项目的参考[.dll文件]添加到启动项目中。 – Prabu

+0

我得到错误的原因是项目已被引用... –

回答

0

结果项目(不是我的!)缺少构建项目之间的依赖关系。显然我并不完全理解依赖管理(今年从Java切换到C#),我认为它更自动化,因为我可以使用没有问题的“使用”语句虽然依赖性已设置,但在某些情况下,失踪。我将在稍后进一步调查,但现在它足够了,我知道我将不得不单独检查每个错误并使用“生成”设置进行验证。

1

转到项目文件夹的物理位置 - >右键点击转到属性 - >删除或取消选中只读(删除文件夹只读)和重建方案。

问题是,有时由于您的本地副本的解决方案是只读的而您尝试构建解决方案(它将尝试在构建期间删除/替换某些.exe文件,但由于读取-only模式)。

仅当物理本地包文件夹不存在或被删除时,Nuget包才会恢复。您可以手动删除包文件夹并构建解决方案,它将首先加载或安装所有依赖项。

试试这个,可能会起作用。

+0

这看起来很有前途,很多文件夹都有写保护。 GIT做到了吗?无论如何,它没有明显的区别。根本问题是别的。 –

+0

从您的本地副本中删除只读,它会要求您对子文件夹应用,同意并继续。删除只读不会影响实际项目,这是为您的本地权限。请不要在TFS上登记包文件夹。我确信Visual Studio和TFS,而不是GIT。 –

相关问题