我在Unity项目中使用System.Compression.ZipFile.dll,并已将引用添加到Visual Studio项目和Unity编辑器中,并且代码可以按预期进行编译和运行。
但是,只要Unity编译代码,DLL引用就会从Visual Studio项目中删除。
结果,在Visual Studio后续语言中进行编译将出现名称空间错误。这些错误仅在Visual Studio中存在,因为Unity编辑器在实际编译代码时确实具有引用。
通过将DLL参考重新添加到解决方案中,可以修复这些错误。我想阻止这些错误在Visual Studio中显示,因为它们很烦人。
当Unity实际编译代码时,如何防止从Visual Studio项目中删除引用?
如果有帮助,我将在Windows 8.1和.NET 4.7.1版上使用Visual Studio Community 2015和Unity Editor 2018.2.14f1
编辑:
我的mcs.rsp文件包含:-r:System.IO.Compression.FileSystem.dll 基于统一论坛主题。这很有趣,因为它不是预期的DLL,但仍然有效。
添加-r:System.IO.Compression.ZipFile.dll将导致: 错误CS0006:找不到元数据文件“ System.IO.Compression.ZipFile.dll”。
相关错误是:
CS1069在名称空间“ System.IO.Compression”中找不到类型名称“ ZipFile”。此类型已转发到程序集'System.IO.Compression.FileSystem,版本= 4.0.0.0,区域性=中性,请考虑添加对该程序集的引用。
找不到错误CS0006元数据文件ProjectFolder \ Temp \ bin \ Debug \ Assembly-CSharp.dll'
Unity已正确配置为使用.NET 4.x
答案 0 :(得分:0)
您期望得到的行为。
让我们通过official way来实现您想要的目标:
Assets
目录中,并复制PDB文件,以便Unity从中生成MDB文件由于第2步重新生成了Visual Studio解决方案,因此您对其所做的所有自定义都会丢失,手动添加现有项目(以便在调试游戏时能够逐步完成这些项目)的例外。
请注意,在正式说明中,没有人希望您添加对生成的项目的引用,而是自动完成的,并且手动更改仍然会丢失,如上一段所述。
但是您遇到了错误,对吧?
没有更多信息很难说。
建议:
1。
请尝试使用官方说明,如果它不起作用,请编辑您的问题以添加相关错误,以便人们可以进一步尝试为您提供帮助。
2。
您的DLL是否与Unity的框架版本匹配? 在某些情况下,否则会产生有趣的错误。
当我查看System.IO.Compression.ZipFile的内容时,它仅适用于.NET 4.6:
您的播放器设置是否与.NET 4.6匹配?
答案 1 :(得分:0)
在C#7或C#8中使用某些新功能时,会发生此问题。 就我而言,我正在开发一个基于.NET Framework 4.6的旧项目,并将某些using块切换为简化using语句。例如,而不是
using (var resource = new ExpensiveStuff())
{
//whatever
}
我做到了:
using var resource = new ExpensiveStuff();
//whatever
编译器无声地允许我执行此操作,但是下一次构建因CS0006而失败。我花了一个小时才弄清楚。我正要重新安装Windows ...大声笑