c# - 每次我重新加载项目时,统一的 Csproj 文件都会更改

标签 c# unity3d msbuildcommunitytasks

我想更改我的统一项目的“csproj”文件,以便能够以 this 访问特定库回答建议。

我正在手动编辑文件,但每次我重新加载项目时,“csproj”文件都会返回到它的初始状态。

这是一个常见问题吗?有没有办法避免这种情况并永久更改文件?


编辑:我的目标是使用CSharpCodeProvider,所以如果有另一种方法可以在不更改“csproj”文件的情况下使用它,我会很乐意采用这种方法

最佳答案

据我所知,您无法阻止 Unity 在重新编译脚本时覆盖您的 csproj 文件。

在处理较大的代码库和 Unity3D 时,我倾向于将大部分代码放入单独的 .Net 程序集 (DLL) 中。当我在多个项目和游戏服务器之间共享代码时,这对我很有帮助,而且 Unity 在检测到更改时不需要编译所有脚本。

为此,启动您选择的 .Net IDE 并创建一个新的类库 项目(它将输出一个 .dll)。确保它针对 .Net Framework 3.5 或更低版本。然后,在生成后步骤中将输出的 .dll 复制到 Unity 项目的 Assets 文件夹中。我喜欢使用构建后步骤来防止我在更改后忘记复制程序集。

Unity 在创建其 C# 项目时会自动引用项目Assets 文件夹中的 DLL。这意味着所有包含的代码都可以在您的脚本中使用。但请注意,反之则不会那么容易:您不能在单独的项目中使用来自 Unity 脚本的代码。

取决于你想用 CSharpCodeProvider 做什么您可以将您的生成逻辑(以及必要的 Import 指令)放入这样一个单独的项目中。

编辑:有关我们如何设置项目结构的更多信息,您可以观看 this talk来自 Unite11 的 Jagged Alliance Online 首席程序员。

关于c# - 每次我重新加载项目时,统一的 Csproj 文件都会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30877355/

相关文章:

C# - 进程没有终止

c# - 使用带有后续 try-finally 子句的 ReaderWriterLockSlim.EnterXXX() 模式是否完全安全

android - Android 设备的 Unity 调试

msbuild - XmlMassUpdate 多个值(MSBuild 社区任务)

tfs - tfspreview 上的 tf.exe

c# - 我如何才能同时打开两个连接以在 c# 中同步两个数据库 mysql?

Android 项目在发布版本中生成过多的 DEX 文件

user-interface - mask UI 图像/原始图像

MSBuild 和创建 ZIP 文件

c# - 试图从 bat 文件中读取但它给了我一个错误