Visual Studio没有将Unity项目的二进制文件放入输出文件夹

4

我正在处理一个包含默认Unity项目(Assembly-CSharp)的解决方案。

我添加了一个测试项目到该解决方案中,并引用了Assembly-CSharp。根据IntelliSense,测试项目确实看到了来自Assembly-CSharp的类型,然而当我试图构建解决方案时,我遇到了以下错误

元数据文件‘MyProjectFolder\Temp\bin\Debug\Assembly-CSharp.dll’无法找到。

因此,我不能在我的Unity项目上运行单元测试

事实上,当我构建Unity项目时,.\Temp\bin\Debug 文件夹仍然为空,尽管VS已经识别出构建成功。


你是为哪个平台进行开发?你在Unity中打开脚本时看到的4个项目视图,是否就是你所说的视图?这一点很重要,因为有些情况下添加项目并不能帮助你,就像你现在做的那样。你这么做是因为想编写单元测试吗?如果是,网上有很多指南可以参考。 - Perazim
打开新的Unity项目在VS中的源代码时,解决方案确实只包含Assembly-CSharp(我认为以前不是这样的)。我调整了问题以使其更简单。但我认为你忽视了我的真正问题——它与学习如何编写单元测试没有任何关系,而是关于任何其他程序集(例如单元测试项目)无法使用我的Unity项目程序集。 - Павле
2个回答

10
问题是由Unity工具扩展中的“禁用项目的完整构建”设置引起的,这是新功能。它防止二进制文件被创建,在不实际使用时加快了速度,例如启动调试器时。

enter image description here

在Visual Studio设置中关闭此选项可以解决问题。现在所有构建产品都放置在"./Temp/bin/Debug"文件夹中,我可以运行单元测试。
功能请求
我向VS提出了一个功能请求,希望能够在解决方案级别上定义此设置,这样您就可以为速度和单元测试分别拥有1个解决方案。希望它能得到足够的投票支持: https://developercommunity.visualstudio.com/idea/798543/make-it-possible-to-manipulate-the-disable-the-ful.html

我之前不知道这个设置。谢谢你对此事的澄清。 - MikeLimaSierra
1
做这件事时,他们完全打破了ProjectReference协议https://github.com/dotnet/msbuild/blob/master/documentation/ProjectReference-Protocol.md的预期,而开发者社区上却毫无回应。感谢您记录下您的发现。 - aolszowka
谢谢,我在找到你的答案之前查了很长时间! - Michael Ernst
这个选项似乎已经消失了。 - Soylent Graham

1
我有同样的问题,重新生成项目文件解决了这个问题。
编辑 => 首选项 => 外部工具 => 重新生成项目文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接