我有一个视觉工作室的解决方案。 我在解决方案中有许多项目。 有一个主要项目作为启动,并使用其他项目。 有一个项目叫“ProjectX”。其参考资料添加到主项目中。 ProjectX引用了另一个. net dll(例如abc.dll),它不是解决方案的一部分。
现在这个abc.dll应该被复制到主项目的bin/debug文件夹中,但它没有被复制到那里。为什么没有被复制,有什么已知的原因吗?
我有一个视觉工作室的解决方案。 我在解决方案中有许多项目。 有一个主要项目作为启动,并使用其他项目。 有一个项目叫“ProjectX”。其参考资料添加到主项目中。 ProjectX引用了另一个. net dll(例如abc.dll),它不是解决方案的一部分。
现在这个abc.dll应该被复制到主项目的bin/debug文件夹中,但它没有被复制到那里。为什么没有被复制,有什么已知的原因吗?
当前回答
在代码中不需要dummy 只是:
向可执行项目添加引用
或/并确保在可执行项目中的引用有“复制本地”设置为TRUE(这是我的“错误”),似乎这“覆盖了”在基本引用库项目中的设置…
其他回答
在我的例子中,这是最愚蠢的事情,由TFS/VS的默认行为引起的,我不同意。
由于添加dll作为主项目的引用没有工作,我决定将其添加为“现有项”,复制本地=始终。即使那时文件也不在那里。
事实证明,即使文件出现在VS解决方案中,并且在本地和服务器上编译了所有内容,VS/TFS并没有将该文件添加到源代码控制中。它根本不包括在“未决更改”中。我不得不手动打开源代码管理资源管理器,并明确地单击“将项目添加到文件夹”图标。
愚蠢,因为我已经在vs中开发了15年,我以前遇到过这种情况,我只是不记得了,不知为何我错过了它,因为所有东西仍然编译,因为文件是常规引用,但被添加为Existing Item的文件没有被复制,因为它不存在于源代码控制服务器上。
我希望这能节省一些时间,因为我失去了2天的生命。
问题:
在NuGet包DLL (Newtonsoft.json.dll)中遇到类似的问题,其中构建输出不包括引用的DLL。但是编译过程进行得很顺利。
Fix:
在文本编辑器中浏览你的项目,并在其中寻找带有“Private”标签的引用。像真或假。“私有”是“本地复制”的同义词。在操作的某个地方,MSBuild正在定位依赖项,它在其他地方找到你的依赖项,并决定不复制它。
因此,检查每个.csproj/。Vbproj文件,并手动删除标签。在Visual Studio和MSBuild中,一切都可以正常工作。一旦你让它工作,你可以返回并更新到你认为他们需要的地方。
参考:
https://www.paraesthesia.com/archive/2008/02/13/what-to-do-if-copy-local-works-in-vs-but.aspx/
VS2019 V16.6.3
对我来说,问题是主.proj文件最终以这样的项目入口结束,其DLL没有被复制到父项目bin文件夹:
<ProjectReference Include="Project B.csproj">
<Project>{blah blah}</Project>
<Name>Project B</Name>
<Private>True</Private>
</ProjectReference>
我手动删除了一行<Private>True</Private>,然后在主项目的每次构建时将DLL复制到主项目bin文件夹。
如果您转到主项目的参考文件夹中的问题项目的参考,单击它并查看属性,其中有一个“本地复制”设置。私有标记等同于这个设置,但对我来说,出于某种原因,更改本地复制对.proj文件中的私有标记没有影响。
令人恼火的是,我没有更改引用的复制本地值,不知道它是如何设置的,又浪费了一天追踪VS的愚蠢问题。
感谢所有其他帮助我了解原因的答案。
HTH
将DLL作为现有项添加到其中一个项目中,应该对其进行排序
在代码中不需要dummy 只是:
向可执行项目添加引用
或/并确保在可执行项目中的引用有“复制本地”设置为TRUE(这是我的“错误”),似乎这“覆盖了”在基本引用库项目中的设置…