2014-02-17 141 views
1

即使在同一Visual Studio项目中有MyClass.cs的名称存在类文件,是否会在运行时使用类文件MyClass.cs.bak?Visual Studio 2012中带有.bak扩展名的类文件

这两个文件都包含在项目中。该项目是Web应用程序类型,因此部署时所有内容都编译成单个dll。我不确定在编译过程中,.bak文件是否被忽略。

我正在使用Visual Studio中的一个项目,其中一些过去的开发人员已将这两个文件包含在项目中。

+0

很可能只是一个应该从项目中排除的备份文件。你有没有将它与另一个文件区分开来并看到差异? – Lloyd

+0

@劳埃德 - 只有一条线有所不同。但是我们使用源代码控制,那么为什么有人甚至会想到创建一个.bak文件。 – Sunil

+0

VS.net有一定的文件扩展名,它会查找项目中的所有文件,如果它知道扩展名,它会尝试使用它。如果'bak'扩展名对于Visual Studio来说意味着什么,它将尝试以某种方式处理它。但它绝对不是代码文件扩展名。代码文件可以是'* .cs','.vb','* .ashx'(针对网页)等。检查'bak'文件的构建动作。如果有的话,我会认为这是与数据库相关的文件扩展名。 –

回答

1

号的.bak文件被视为普通文本文件。

这很容易测试。创建一个新的类文件,类名为foo

现在创建一个新的.cs.bak文件并输入相同的代码。

当您编译项目时,您会期望重复的类声明错误 - 这不会发生。

+0

那么创建一个。bak文件在这种情况下?它似乎根本不需要,因为我们使用源代码管理。 – Sunil

+0

@Sunil这是一个备份文件,我猜... –

+0

我只能推测它是作为备份或存档创建的。但是,由于该项目在版本控制中,这样做没有意义。 – Kami

1

据我所知(检查),由默认,一个*.bak文件视为一个VS工程C#类文件。它只是另一个文本文件,它不作为class模块编译到程序集中 - 顺便说一句,为什么你不会得到重复的类名声明异常。

您可以随时告诉VS将其视为可编译的c#文件:属性 - >构建操作 - >编译。

它只是看起来像一个备份(bak)源文件 - 只是为了历史目的,我假设。

4

如果您在解决方案资源管理器中单击该文件并查看属性窗口,您会看到一个名为“构建操作”的属性。它定义了文件是否被视为代码(“编译”),包含为资源(“嵌入式资源”),或被忽略(“无”)。

将文件添加到项目时,将根据文件扩展名选择默认的Build Action。对于.bak文件,对C#项目没有特别的意义,应该选择默认的“None”,编译项目时文件将被忽略。

+1

优秀的解释。当我尝试你的建议检查时,我发现该文件有一个内容生成行为。 – Sunil