调用,当文件的编辑。
命名空间: Microsoft.VisualStudio.Shell.Interop
程序集: Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)
语法
声明
Function QueryEditFiles ( _
rgfQueryEdit As UInteger, _
cFiles As Integer, _
rgpszMkDocuments As String(), _
rgrgf As UInteger(), _
rgFileInfo As VSQEQS_FILE_ATTRIBUTE_DATA(), _
<OutAttribute> ByRef pfEditVerdict As UInteger, _
<OutAttribute> ByRef prgfMoreInfo As UInteger _
) As Integer
int QueryEditFiles(
uint rgfQueryEdit,
int cFiles,
string[] rgpszMkDocuments,
uint[] rgrgf,
VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo,
out uint pfEditVerdict,
out uint prgfMoreInfo
)
参数
- rgfQueryEdit
类型:System.UInt32
[in] 设置从 tagVSQueryEditFlags 采用枚举的标志值。默认值为 0。
- cFiles
类型:System.Int32
[in] 计数文件。
- rgpszMkDocuments
类型:array<System.String[]
[in] 要处理的文件。这是相同大小与 cFiles。它是无效的为了 cFiles 可以为 0。
- rgrgf
类型:array<System.UInt32[]
[in] 从 tagVSQEQSFlags 采用枚举的标志值。 NULL 提示它们都是 0。
- rgFileInfo
类型:array<Microsoft.VisualStudio.Shell.Interop.VSQEQS_FILE_ATTRIBUTE_DATA[]
[in] 从 VSQEQS_FILE_ATTRIBUTE_DATA 结构采用的值包含有关文件属性的信息。这可能是 nullnull 引用(在 Visual Basic 中为 Nothing);,如果 rgrgf 是 nullnull 引用(在 Visual Basic 中为 Nothing),将忽略此参数。
- pfEditVerdict
类型:System.UInt32%
[out] 从 tagVSQueryEditResult 枚举采用的值指明编辑是否可以继续。
- prgfMoreInfo
类型:System.UInt32%
[out] 对的指针值从 tagVSQueryEditResultFlags 枚举执行的一组标志。
返回值
类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。
在 pfEditCanceled 的返回值指示是否为编辑器是好的文件将继续。
该参数prgfMoreInfo 返回以下结果:
任何文件是否签出
任何文件是否在签出已更改
任何文件是否在内存中编辑
内存是否不允许编辑
是否需要喧闹签出 (仅在无提示模式)
签出是否已取消或失败
备注
COM 签名
从 ivsqueryeditquerysave2.idl
HRESULT QueryEditFiles(
[in] VSQueryEditFlags rgfQueryEdit,
[in] int cFiles,
[in, size_is(cFiles)] const LPCOLESTR rgpszMkDocuments[],
[in, size_is(cFiles)] const VSQEQSFlags rgrgf[],
[in, size_is(cFiles)] const VSQEQS_FILE_ATTRIBUTE_DATA rgFileInfo[],
[out] VSQueryEditResult *pfEditVerdict,
[out] VSQueryEditResultFlags *prgfMoreInfo
);
编辑,定义为可以更改项目文件的内容的任何,应调用此方法,第一个在未更改的文档之前编辑。编辑解决方案的任何内容 (.sln) 文件的内容可以调用 QueryEditSolutionFile,将调用此方法。
如果文件不是只读的和不受源代码管理下, QER_EditOK 返回。
如果文件为只读,则为; 如果不在源代码管理下,属性,并且,如果 rgfQueryEdit 不包括 QEF_AllowInMemoryEdits (或选项 " 对话框设置禁止编辑只读文件),然后 QER_NoEdit_UserCanceled 无提示地返回,并且不应提交编辑到内存中数据。如果环境在降噪模式下,它将提示编辑器中移除的用户。
如果文件为只读,则为; 如果不在源代码管理下,属性,并且,如果 rgfQueryEdit 包括 QEF_AllowInMemoryEdits (或选项 " 对话框设置允许内存编辑),然后 QER_EditOK 无提示地返回。
如果文件为只读和在源代码管理下,是否为用户提供一个选择签出文件。如果文件已签入, QER_EditOK 返回;否则, QER_NoEdit_UserCanceled 返回。这种情况较为复杂,如果环境不支持 “签出本地版本”选项 (和考虑 reloadability),因此,如果用户已经有最新版本的文件,,并且,如果内存编辑器允许 (即 QEF_AllowInMemoryEdits)。但是,在大多数情况下,内存编辑签入文件是不可能的。
编辑、 Reloadability 和签出
当您调用 QueryEditFiles时,总是已检查的文件的潜在,而更改文件内容在内存和磁盘上。
由于已更改的内容可能,在更改实际对文件之前,,使文件更改的所有 Vspackage 应调用 QueryEditFiles 在第一次尝试更改文件的内容。如果 VSPackage 没有首先调用 QueryEditFiles ,因此,更改已对文件在内存中,这些内存更改可能会丢失由于已签出的文件。这被视为在 VSPackage 中的 bug。
有关是否更改了文件在 *prgfMoreInfo 返回通过 QER_Reloaded 或 QER_Changed 标志返回值。
![]() |
---|
,如果 QEF_DetectAnyChangedFile 标志。 rgfQueryEdit 传递给 QueryEditFiles 调用,QER_Changed 只返回。 |
如果文件在运行文档表,并且, QueryEditFiles 确定需要重载,它将尝试重新加载文件内容。如果它不能重新加载其数据,它显示建议的消息框用户手动关闭并重新打开文档。如果实现自定义编辑器,请参见有关如何的 IVsPersistDocData 支持的信息负荷繁重文档。
项目文件
将由调用 QueryEditFiles 的每个项目,更改将对在项目文件中保存的信息以及有关保存项目文件之前调用 QuerySaveFile 或 QuerySaveFiles 。
.NET Framework 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。