文件属性
更新:2007 年 11 月
可以使用文件属性指示项目系统应对文件执行什么操作。例如,可将文件属性设置为指示文件应进行编译还是应作为资源嵌入生成输出中。
可以在解决方案资源管理器中选择任何文件,然后在“属性”窗口中检查其属性。Visual Basic 和 Visual C# 文件有四个属性:“FileName”、“BuildAction”、“CustomTool”和“CustomToolNamespace”。
说明: |
---|
“BuildAction”、“CustomTool” 和 “CustomToolNamespace”属性是为高级方案提供的。默认值通常就足够了,而且不必更改。 |
FileName 属性
通过在“属性”窗口中单击“FileName”属性,然后键入新名称,可以重命名文件。请注意,如果更改文件的名称,则 Visual Studio 将自动重命名与之关联的任何 .vb 或 .resx 文件。
BuildAction 属性
“BuildAction”属性指示 Visual Studio 在执行生成时对文件执行的操作。BuildAction 可以具有以下几个值之一:
None - 不在项目输出组中包含该文件,并且在生成进程中不会对其进行编译。例如包含文档的文本文件,如自述文件。
Compile - 将该文件编译到生成输出中。此设置用于代码文件。
Content - 不编译该文件,但将其包含在“内容”(Content) 输出组中。例如,此设置是 .htm 或其他类型 Web 文件的默认值。
Embedded Resource - 将该文件作为 DLL 或可执行文件嵌入主项目生成输出中。此设置通常用于资源文件。
“BuildAction”的默认值取决于添加到解决方案中的文件的扩展名。例如,如果将 Visual Basic 项目添加到解决方案资源管理器中,则“BuildAction”的默认值是“编译”。因为扩展名 .vb 指示可编译的代码文件。文件名和扩展名出现在解决方案资源管理器中。
请注意,项目中文件的名称不是程序集清单中托管资源的标识符(有关更多信息,请参见程序集清单)。标识符将为 namespace.filename.extension,其中 namespace 是“DefaultNamespace”属性的值(在 Visual C# 项目中)或 RootNamespace 属性的值(在 Visual Basic 项目中)。Filename 和 extension 保留其原来的名称不变。如果该文件是 .resx 文件,则项目系统将对该文件运行 resgen.exe,创建一个 .resource 文件。.resource 文件将嵌入到程序集中。因此,程序集清单将引用 .resources 文件而不是 .resx 文件。
例如,如果将 MyFile.bmp 文件添加到其默认命名空间为 MyProj 的项目中,并将生成操作设置为 Embedded Resource,则 MyProj.MyFile.bmp 将是程序集清单中的标识符。如果在随后将 MyFile.resx 文件添加到该项目中,则默认的生成操作将是“嵌入的资源”,而 MyProj.MyFile.resources 将是程序集清单中的标识符。
请注意,当资源编辑器中添加了图像时,它会将“生成操作”设置为“无”,这是因为 .resx 文件引用该图像文件。在生成时,该图像会被拖入到从 .resx 文件创建的 .resources 文件中。然后可以通过为 .resx 文件自动生成的强类型类轻松访问该图像。因此,不应该将此设置更改为“嵌入的资源”,因为这样做的话会在程序集中包括图像两次。
有关如何在运行时访问资源文件(从 .resx 文件编译的)的更多信息,请参见 ResourceManager 类。有关如何在运行时访问其他所有嵌入文件和资源的更多信息,请参见 Assembly.GetManifestResourceStream 方法。
CopyToOutputDirectory 属性
此属性指定将选定的源文件复制到输出目录所依据的条件。如果文件从未复制到输出目录中,则选择“不复制”。如果文件总是复制到输出目录中,则选择“始终复制”。如果仅在此文件比输出目录中与其名称相同的现有文件更新时复制,则选择“如果较新则复制”。
说明: |
---|
在智能设备项目中,通过对 Win32 版本做如下比较来确定 .dll 或 .exe 文件的新旧: 如果设备端版本低于桌面版本,则复制文件。 如果设备端版本高于桌面版本,则不复制文件。 如果版本相同,则进行校验和比较。如果校验和相同,则不复制文件。如果校验和不同,则复制文件。 .dll 和 .exe 之外的文件的新旧比较仅基于校验和。 |
说明: |
---|
数据文件将复制到输出目录中名为 Data Files 的子文件夹中。 |
CustomTool 属性
自定义工具是可用于在设计时将文件从一种类型转换为另一种类型的组件。例如,自定义工具可以是一个数据集代码生成器,它在一个 XML 架构 (.xsd) 文件中读取,在以编程方式公开其表和列的代码文件中生成类。产品中有一个预定义的可用自定义工具列表;此属性使您能够了解哪一个自定义工具适用于某一文件。在极少的情况下,可能必须更改此属性的值。此属性的值必须为空白或内置自定义工具之一。
若要设置或更改自定义工具,请单击“属性”窗口中的“CustomTool”属性,然后键入自定义工具的名称。
CustomToolNamespace 属性
如果已经将某自定义工具分配到项目,则“CustomToolNamespace”属性将使您能够指定一个命名空间,用于分配给自定义工具生成的代码。当为“CustomToolNamespace”属性指定一个值时,自定义工具生成的代码将被放入指定的命名空间中。如果此属性为空,则将生成的代码放入转换的文件所在的文件夹的默认命名空间中。对于 Visual Basic,此命名空间是项目的根命名空间;对于 Visual C#,此命名空间与文件夹的“DefaultNamespace”属性的设置相对应。
请参见
概念
Visual Basic 和 Visual C# 中的文件类型和文件扩展名