我正在使用EF Code First进行项目迁移,我偶然发现了一个奇怪的行为:
在程序包管理器控制台中执行“启用 - 迁移”命令会生成“迁移”文件夹和“Configurations.cs”文件。当我在Notepad ++中检查“Configurations.cs”的编码时,它表明它是ANSI编码的。
当我在Visual Studio 2010中创建任意文件时,它始终以UTF-8编码。为什么NuGet以其他编码生成文件?
提前致谢, 克里斯
答案 0 :(得分:2)
我终于开始正确地调查这个......
文件(Configuration.cs和各个迁移文件)实际上保存为UTF-8而没有文件签名。除非非ANSI字符出现在文件中的某处,否则此格式与ANSI无法区分。如果文件中存在非ANSI字符,Notepad ++等工具只会将其显示为UTF-8。这是因为只有ANSI字符的UTF-8文件与ANSI格式100%兼容。
如果你的上下文类型名称,表名等中有非ANSI字符,那么事情就会按预期工作,而Notepad ++会将文件格式报告为UTF-8。
答案 1 :(得分:1)
配置文件实际上存储为嵌入在NuGet包中的程序集中的模板,然后在使用Enable-Migrations时处理并复制到项目中。存储的模板是ANSI文件,因此您获得的文件是ANSI文件。您应该能够将其重新保存为UTF-8 - 运行时无关紧要。