Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Unity3D 入门:使用 Visual Studio 开发 Unity C# 脚本,说说根目录的那些 sln 和 csproj 文件

Unity3D 入门:使用 Visual Studio 开发 Unity C# 脚本,说说根目录的那些 sln 和 csproj 文件

作者头像
walterlv
发布于 2023-10-22 03:09:02
发布于 2023-10-22 03:09:02
1.4K0
举报

本文介绍 Unity3D 项目根目录的 sln 和 csproj 文件,你将知道如何正确理解和使用它们。

对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。但在 Unity 项目里面,你可能要改变这一观念——因为 Unity 项目里面实际上并不存在 sln 和 csproj 文件。

等等!那我们在根目录看到的那些 sln 和 csproj 文件是什么?

那只是 Unity 编辑器为了让你方便写 C# 代码临时生成给你用的。

默认 Unity 不指定外部脚本编辑器时,会单纯打开 .cs 文件而已。而如果指定了 Visual Studio 作为外部脚本编辑器,那么再从 Unity 中打开 C# 项目时,将会生成 sln 和 csproj 文件,然后调用 Visual Studio 打开生成的 sln 和 csproj 文件。

这里就需要特别注意了:每次点击 Open C# Project 打开 C# 项目时,都会重新生成 sln 和 csproj 文件,所以实际上你对 sln 和 csproj 所做的任何改动都是无效的!

这样的设计,有好处也有坏处:

  1. 有了 sln 和 csproj,Visual Studio 将能充分运行代码分析器,可以在类与其他符号之间跳转,可以有智能感知提示,可以实时发现编写中的代码错误(甚至是引用错误)。
  2. 但让 Visual Studio 的各种功能激活后就会让我们这样的入门开发者产生误会,认为这其实就是 C# 项目,会尝试真的对这些项目进行可能超出 Unity 功能范围的修改。

真正在编译完成放到游戏中运行的,是 Assets 文件夹中的文件。而外面的 sln 和 csproj 文件,应该加入到 .gitignore 文件中,从版本管理中忽略掉。

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/unity-starter-the-sln-and-csproj-files.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
实际上本文不看也罢,因为整个过程除了网速之外基本没啥坑。不过装完可能有一些配置,所以如果不知道的话可以参考本文。
walterlv
2023/10/22
3.3K0
Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包
因为 Visual Studio 有强大的包管理器插件,所以即便是不熟悉 NuGet 命令的小伙伴也能轻松安装和管理 NuGet 包。不过,对 Unity C# 项目来说,你并不能直接引用 dll,也不能直接使用自带的 NuGet 包管理器完成 NuGet 包安装。
walterlv
2023/10/22
3.8K0
Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包
Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本
本文依然是 Unity3D 的入门篇。作为 Unity3D 的入门读者,你可能希望迅速让你能在游戏中操作你的视角,或者让角色移动。
walterlv
2023/10/22
2.2K0
Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本
Unity3D 入门:如何制作天空效果?天空盒的使用
在 Unity 编辑器的主界面中我们可以很容易制作各种场景物体,但天空如何制作呢?
walterlv
2023/10/22
3.3K0
Unity3D 入门:如何制作天空效果?天空盒的使用
通过设置 sln 解决方案依赖,确保不引用的两个项目之间有明确的编译顺序
有时在编译解决方案的时候,希望两个项目有明确的编译顺序,而不是自动决定,或者在并行编译的时候同时编译。
walterlv
2023/10/22
6320
通过设置 sln 解决方案依赖,确保不引用的两个项目之间有明确的编译顺序
让你的 VSCode 具备调试 C# 语言 .NET Core 程序的能力
如果你是开发个人项目,那就直接用 Visual Studio Community 版本吧,对个人免费,对小团体免费,不需要这么折腾。
walterlv
2023/10/22
2.2K0
让你的 VSCode 具备调试 C# 语言 .NET Core 程序的能力
.NET/C# 项目如何优雅地设置条件编译符号?
条件编译符号指的是 Conditional Compilation Symbols。你可以在 Visual Studio 的项目属性中设置,也可以直接在项目文件中写入 DefineConstants 属性。
walterlv
2023/10/22
6150
.NET/C# 项目如何优雅地设置条件编译符号?
Unity3D 入门:如何为游戏添加 UI
早期的 Unity3D 做 UI 并不容易,以至于大家习惯于使用 NGUI 插件来开发。后来 NGUI 的开发者加入开发了 Unity UI,现在就有了一套更好用的 Unity UI 可用了。
walterlv
2023/10/22
6720
Unity3D 入门:如何为游戏添加 UI
Unity3D 入门:Unity 项目版本管理建议使用的 .gitignore 忽略文件和 .gitattributes 文件(2020年4月更新)
Unity3D 项目虽然说使用 C# 脚本开发,但毕竟不是 .NET/C# 项目。今天一位小伙伴告诉我说用错了 .gitignore 文件,结果管理仓库时丢了很多重要的文件。
walterlv
2023/10/22
1.7K0
Visual Studio 2017 以前的旧格式的 csproj Import 进来的 targets 文件有时不能正确计算属性(PropertyGroup)和集合(ItemGroup)
我在之前的博客中有教大家如何编写 NuGet 工具包,其中就有编写 .targets 文件。
walterlv
2023/10/22
3170
MSBuild/Roslyn 和 NuGet 的 100 个坑
MSBuild 不愧是强大的编译器,它提供的扩展机制让你几乎可以编译任何类型的文件或项目;Roslyn 是全新编写的一套编译器,不过它保留了 MSBuild 的大部分机制;NuGet 是 .NET 生态系统中的包管理机制,被原生集成在新的 Microsoft.NET.Sdk 中。
walterlv
2023/10/23
5130
MSBuild/Roslyn 和 NuGet 的 100 个坑
Visual Studio 2022 出来啦!教你如何将 VS2019 的 VSIX 扩展/插件项目迁移到 VS2022
从 Visual Studio 2022 开始,Visual Studio 正式启用了 amd64 架构。为了确保扩展的兼容性,Visual Studio 2022 不会启用以前编译过的扩展,即使以前编译过的扩展把支持的 Visual Studio 版本号加到了 17.0(对应 VS2022)也不行。毕竟 x64 的进程真加载一个 x86 的程序集时,会炸得体无完肤。
walterlv
2023/10/23
1.1K0
Visual Studio 2022 出来啦!教你如何将 VS2019 的 VSIX 扩展/插件项目迁移到 VS2022
nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file
我这里使用 Visual Studio 2019 能好好编译的一个项目,发现在另一个小伙伴那里却编译不通过,是在 NuGet 还原那里报告了错误:
walterlv
2023/10/22
5430
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕。通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项目生成的程序集。
walterlv
2023/10/22
8550
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
使用 Microsoft.Net.Compilers 在旧版本的 Visual Studio 2013/2015/2017 中开启新的 C# 7.x 和 C# 8 语法
新版本的 C# 特性需要新版本的 Visual Studio 的支持。不过,如果你不介意修改项目的话,你也能在低版本的 Visual Studio 中获得高版本的 C# 语言支持了。
walterlv
2023/10/22
7130
理解 C# 项目 csproj 文件格式的本质和编译流程
发布于 2018-05-10 00:13 更新于 2018-08-12 08:11
walterlv
2018/09/18
2.9K0
理解 C# 项目 csproj 文件格式的本质和编译流程
理解 Visual Studio 解决方案文件格式(.sln)
一般情况下我们并不需要关心 Visual Studio 解决方案文件格式(.sln),因为 Visual Studio 对解决方案文件的自动修复能力是非常强的。但是如果遇到自动解冲突错误或者编译不通过了,那么此文件还是需要手工修改的。
walterlv
2023/10/22
1.5K0
理解 Visual Studio 解决方案文件格式(.sln)
Unity3D 入门:在 Visual Studio 里使用 Visual Studio Tools for Unity 全套工具
Visual Studio 安装过程中一起勾选的 Visual Studio Tools for Unity 提供了与 Unity 编辑器方便的交互功能,充分使用 Visual Studio Tools for Unity 可以提升一部分开发效率减少一点点坑。
walterlv
2023/10/22
1.2K0
Unity3D 入门:在 Visual Studio 里使用 Visual Studio Tools for Unity 全套工具
推荐 .NET/C# 开发者安装的几款代码分析插件或对应的代码分析 NuGet 包
如果你使用的是旧版本的 Visual Studio,那么默认的代码分析规则集是“最小建议规则集”。基于这个,写出来的代码其实只能说是能跑通过而已。随着 Roslyn 的发布,带来了越来越多更强大的代码分析器,可以为编写高质量的代码带来更多的帮助。
walterlv
2023/10/22
1K0
推荐 .NET/C# 开发者安装的几款代码分析插件或对应的代码分析 NuGet 包
在 csproj 文件中使用系统环境变量的值(示例将 dll 生成到 AppData 目录下)
Windows 系统以及很多应用程序会考虑使用系统的环境变量来传递一些公共的参数或者配置。Windows 资源管理器使用 %var% 来使用环境变量,那么我们能否在 Visual Studio 的项目文件中使用环境变量呢?
walterlv
2023/10/22
7990
在 csproj 文件中使用系统环境变量的值(示例将 dll 生成到 AppData 目录下)
推荐阅读
Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
3.3K0
Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包
3.8K0
Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本
2.2K0
Unity3D 入门:如何制作天空效果?天空盒的使用
3.3K0
通过设置 sln 解决方案依赖,确保不引用的两个项目之间有明确的编译顺序
6320
让你的 VSCode 具备调试 C# 语言 .NET Core 程序的能力
2.2K0
.NET/C# 项目如何优雅地设置条件编译符号?
6150
Unity3D 入门:如何为游戏添加 UI
6720
Unity3D 入门:Unity 项目版本管理建议使用的 .gitignore 忽略文件和 .gitattributes 文件(2020年4月更新)
1.7K0
Visual Studio 2017 以前的旧格式的 csproj Import 进来的 targets 文件有时不能正确计算属性(PropertyGroup)和集合(ItemGroup)
3170
MSBuild/Roslyn 和 NuGet 的 100 个坑
5130
Visual Studio 2022 出来啦!教你如何将 VS2019 的 VSIX 扩展/插件项目迁移到 VS2022
1.1K0
nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file
5430
三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
8550
使用 Microsoft.Net.Compilers 在旧版本的 Visual Studio 2013/2015/2017 中开启新的 C# 7.x 和 C# 8 语法
7130
理解 C# 项目 csproj 文件格式的本质和编译流程
2.9K0
理解 Visual Studio 解决方案文件格式(.sln)
1.5K0
Unity3D 入门:在 Visual Studio 里使用 Visual Studio Tools for Unity 全套工具
1.2K0
推荐 .NET/C# 开发者安装的几款代码分析插件或对应的代码分析 NuGet 包
1K0
在 csproj 文件中使用系统环境变量的值(示例将 dll 生成到 AppData 目录下)
7990
相关推荐
Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档