Visual Studio 2015/TFS 中的 MATLAB 文件关联

MATLAB File Association in Visual Studio 2015 / TFS

我在 Visual Studio 2015 年使用 TFS,对 MATLAB 文件关联有疑问。对于 .m 个文件,没有与 MATLAB 的关联,如下所示:

令人困惑的是,.fig.mat 文件存在关联,因此 VS 必须识别 MATLAB "exists"。如果我双击其中一种文件类型,它将在 MATLAB 中打开它,就像在资源管理器 window 中一样。这是我想要 .m 个文件的行为。

至少,我希望 .m 文件有 MATLAB 图标,以便在目录中轻松找到它们。作为理想的解决方案,这些文件也可以在 TFS 的 MATLAB(而不是 VS 文本编辑器)中打开。

我已经尝试了选项 > 文本编辑器中的 "File Extension" 选项,但 MATLAB 在编辑器列表中不适合我。

值得注意的是,我的工作网络对软件安装非常严格,因此外部加载项越少越好(理想情况下 none)。赞赏建议。

如果我没理解错的话,你是想把MATLAB和VS整合起来(看来你的问题和TFS无关)。

Visual Studio 没有这样的扩展名,但是 MatLab extension for Visual Studio Code

============================================= ============================

从评论来看,您似乎想在 MATLAB 中使用 team explore 来启用 Team Foundation Version Control 的集成使用。恐怕您的要求暂时无法实现。 MATLAB 不支持团队资源管理器或 TFS MSSCCI Provider

我在下面的网站提交了一个用户的声音,你可以投票:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/18325612-enable-integrated-use-of-team-foundation-version-c.

我经常使用一个实用工具来解决与 MATLAB 相关文件的 OS 级关联问题 - associateFiles from FEX.

你可能应该用 associateFiles('deleteadd','.m') 调用它,这将生成一个名为 MatlabFileAssocFix.reg 的注册表文件,其中包含以下内容(显然 MATLAB 路径是根据你的系统生成的):

Windows Registry Editor Version 5.00

;FIXES MATLAB FILE ASSOCIATIONS

;REMOVES M FILE ASSOCIATIONS

[-HKEY_CLASSES_ROOT\.m]

[-HKEY_CLASSES_ROOT\MATLAB.m.9.1.0]

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.m]

;ADD SHELL OPEN

[HKEY_CLASSES_ROOT\Applications\MATLAB.exe\shell\open\command]
@="\"C:\D\Program Files\MATLAB\R2016b\bin\win64\MATLAB.exe\" \"%1\""

;ADD M FILE ASSOCIATIONS

[HKEY_CLASSES_ROOT\.m]
@="MATLAB.m.9.1.0"
"Content Type"="text/plain"
"PerceivedType"="Text"

[HKEY_CLASSES_ROOT\.m\OpenWithProgids]
"MATLAB.m.9.1.0"=""

[HKEY_CLASSES_ROOT\.m\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

[HKEY_CLASSES_ROOT\.m\Versions\MATLAB.m.9.1.0]
"FileVersionMS"=dword:00090001
"FileVersionLS"=dword:00000000

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0]
@="MATLAB Code"
"FriendlyTypeName"="@C:\D\Program Files\MATLAB\R2016b\bin\win64\matlab.exe,-58"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\DefaultIcon]
@="C:\D\Program Files\MATLAB\R2016b\bin\win64\m.ico,0"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Open]
@="Open"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Open\command]
@="\"C:\D\Program Files\MATLAB\R2016b\bin\win64\matlab.exe\""

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Open\ddeexec]
@="uiopen('%1',1)"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Open\ddeexec\application]
@="ShellVerbs.Matlab.9.1.0"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Open\ddeexec\topic]
@="system"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Run]
@="Run"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Run\command]
@="\"C:\D\Program Files\MATLAB\R2016b\bin\win64\matlab.exe\""

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Run\ddeexec]
@="run('%1')"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Run\ddeexec\application]
@="ShellVerbs.Matlab.9.1.0"

[HKEY_CLASSES_ROOT\MATLAB.m.9.1.0\Shell\Run\ddeexec\topic]
@="system"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.m\OpenWithProgids]
"m_auto_file"=hex(0):
"MATLAB.m.9.1.0"=hex(0):

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.m\OpenWithList]
"a"="MATLAB.exe"
"MRUList"="a"

导入此文件时,它会删除 .m 存在的任何关联并将其与 MATLAB 关联。

我不知道这是否适用于您的问题,但我认为应该提及。

请注意:MATLAB 是用 Java 编写的,而不是基于 NET 或 Visual Studio 扩展,因此如果我们尝试将 MATLAB 编辑器作为插件打开,这目前不是一个好主意。

现在要编辑 .m 文件,您必须定义文件类型的新(外部)默认编辑器

如果没有 MATLAB 许可证,请使用 Notepad++、Sublime 和其他支持 .m 文件语法突出显示的免费编辑器。

好的,我是这样做的:

我安装了 VS 代码,因此,它在我的默认程序中创建了一个关联,如下所示:

然后你可以将你的 VS 程序指向这个扩展:

所以经过很长一段时间后,我找到了一个合理的解决方法。

您可以为 .m 个文件设置 "Open With" 默认值,但这似乎会为每个文件打开一个新的 MATLAB 实例 - 不太理想!以下由 SACn 建议 .


更好的选择是使用 Visual Studio 的 "External Tools"。

转到“工具”>“外部工具”,然后如 this documentation 所示,创建一个新工具。使用以下参数:

Title:     Your Title Here
Command:   cmd.exe
Arguments: /c "$(ItemPath)"

勾选"Close on exit"。这将打开带有 /c(在命令后终止)标志的命令提示符,并且 运行s 是您在 VS 中打开的文件的文件名。在 Windows 系统上,这将在打开的 MATLAB 实例中打开文件,或者如果 none 存在则启动一个新实例。


这可以是 运行 多种方式...分配键盘快捷方式,运行 从“工具”菜单中,将其添加到工具栏,将其添加到上下文菜单。

现在只需单击/按键即可根据需要启动打开的 .m 文件。它仍然缺少 MATLAB 文件关联(以及文件浏览器中的相应图标),但它完成了主要工作!