我编写了一个观察Windows.Forms设计器窗口的Visual Studio 2013扩展.当开发人员在设计器窗口中更改控件时,扩展会尝试验证结果是否与我们的ui样式指南一致.如果发现可能的违规,它们将列在工具窗口中.一切正常.但是现在我想在设计器窗口中标记不一致的控件,例如使用红框或类似的东西.
不幸的是,我没有找到在设计器窗口中绘制控件装饰的方法.我知道如果你开发自己的装饰品,你可以画出那些装饰品ControlDesigner
,但我需要从控制设计师的"外部"开始.我只有IDesignerHost
来自Dte2.ActiveWindow
并且可以通过该主机访问Controls和ControlDesigners.我找不到任何方法来从ControlDesigners的"外部"添加装饰品.我现在的解决方法是捕获控件的Paint-Events并尝试从那里绘制我的装饰品.这对于所有控件(即ComboBox等)都不适用,因为并非所有控件都允许您使用它们.所以我不得不使用他们的父控件的Paint事件.此解决方案还有其他缺点.
我希望有人可以告诉我是否有更好的方法.我敢肯定,必须有一个:如果您使用菜单 - >查看 - > Tab键顺序(不知道正确的英文菜单标题,我使用的是德国IDE),您可以看到IDE本身能够装饰控件(没有截图,因为它是我在SO上的第一篇文章),我确信它不会像我一样使用解决方法.它是如何做到的?
我几周来一直在谷歌上搜索.感谢您的帮助,建议,研究起点......
更新:
也许这个截图有点清晰:
从View菜单中选择Tab顺序时,Visual Studio显示的是蓝色编号的插入符号.我的问题是如何通过IDE完成这项工作.
如上所述,我试图Paint
在控件的情况下执行此操作,但例如ComboBox实际上不支持该事件.如果我使用父项的Paint
事件,我只能在子控件周围绘制,因为它们是在父项之后绘制的.
我还想过在控件或ControlDesigner
s 上使用反射,但我不确定如何挂钩受保护的OnPaintAdornments
方法.我不认为IDE开发人员使用那些"肮脏"的技巧.
我安装了MSVC++ 2010 Express并尝试确定可以安装哪些扩展(vsix).Extension Manager中有一些扩展(在线图库部分).所有这些都来自Visual Studio Gallery.为了确保我安装了一些扩展.因此,不能说Visual Studio的快速版本不支持安装Extensions或Add-Ins.起初我决定Visual Studio Gallery是允许扩展的地方.我从那里下载PowerConsole扩展并尝试安装它.但是,我收到了以下文字的消息框:
Visual Studio Extension Installer
此扩展不能安装在任何当前安装的产品上.
问题是,在Visual Studio 2010 Express中安装扩展的确切限制是什么?
visual-studio-2010 visual-studio-express visual-studio vsix visual-studio-extensions
我的问题与此问题非常相似,只是答案和解决办法对我不起作用.我也在Visual Studio 2012中.
我有一个VSPackage引用另一个项目,它依赖于其他dll.每次我在调试中运行我的包时,都会得到一个异常,即无法找到其他dll.它们位于输出目录中,并且已签名.
我尝试直接通过VSPackage项目引用它们无济于事.
思考?
我正在使用Visual Studio Private Gallery向我的公司发布内部VSIX.我的VSIX出现在Visual Studio 2012中"扩展和更新"的"在线"部分,我可以从那里安装它:
但是,一旦安装完毕,我无法弄清楚如何更新我的扩展程序,使其显示在同一对话框的"更新"部分中,也无法弄清楚如何让Visual Studio通知我有可用的更新.
我尝试了以下各种组合:
updated
标记内的entry
标记更改为当前日期和时间updated
标记内的feed
标记更改为当前日期和时间published
标记内的entry
标记更改为当前日期和时间我的期望是1,2和3的组合应足以表明有更新,但无济于事.本指南似乎证实了我的期望:
- 已发布 - 添加扩展的日期/时间.
- 更新 - 上次更新扩展程序的日期/时间.
我也同时尝试了所有4个,也无济于事.
我从Apache实例服务于库,我已经确认它正在为atom.xml设置正确的Last-Modified标头.
是否有一些Visual Studio检查更新的时间间隔?打开"扩展和更新"的"更新"部分是否会强制Visual Studio检查?
这是我的atom.xml的内容:
<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">Visual Studio Extension Gallery</title>
<id>uuid:CDC295B0-7885-4B59-9BDF-F059A9F4B338;id=1</id>
<updated>2013-12-11T19:00:00Z</updated>
<entry>
<id>MyVSIX..b242c6de-d0a6-4ba1-9672-b866e36607d3</id>
<title type="text">MyVSIX</title>
<summary type="text">MyVSIX is a nifty extension that does things.</summary>
<published>2013-12-11T19:00:00Z</published>
<updated>2013-12-11T19:00:00Z</updated>
<author>
<name>daxelrod</name>
</author>
<content type="application/octet-stream" src="vsix/MyVSIX.vsix" />
<Vsix
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/developer/vsx-syndication-schema/2010" …
Run Code Online (Sandbox Code Playgroud) visual-studio vsix visual-studio-extensions visual-studio-2012 atom-feed
安装最新的Visual Studio 2015 Update 2后,EF电动工具反向代码工程师选项失败,并显示以下错误消息.
One or more errors occurred while processing template 'Entity.tt'.
error : An exception was thrown while trying to compile the transformation code. The following Exception was thrown:
System.ArgumentException: Empty path name is not legal.
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.File.OpenRead(String path)
at Roslyn.Utilities.FileUtilities.OpenFileStream(String …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个Visual Studio 2017自定义签入策略扩展.我目前的解决方案结构如下:
注意:我正在利用新的NuGet PackageReference方法,这就是没有packages.config文件的原因.
我相信我已经适当地设置了我的VSIX清单,因为当我没有引用时一切都很完美Microsoft.Net.Http
(最初我是在值中硬编码而不是检索值).我不确定为什么Microsoft.TeamFoundationServer.ExtendedClient
包含的NuGet包不会引起任何问题,而Microsoft.Net.Http
NuGet包也是如此.
我查看了调试文件夹以查看正在编译的内容,并且我看到每个程序集都被拉入,但是如果我解压缩VSIX(我将其重命名为*.zip并解压缩它),则只包含项目程序集; Nuget引用的程序集未打包在VSIX包中.
我遇到了一些资源,但似乎没有任何工作:
这些问题/答案中的每一个似乎都没有解决我的具体问题.
更新:
我相信用于生成VSIX包的工具可能不支持PackageReference
NuGet 的新功能.如果我使用旧的packages.config功能,一切正常.我已经放入了UserVoice Ticket来支持新的NuGet功能.
我想有一个多项目模板,它将创建子项目,并将安装nuget依赖项以及安装此模板的vsix安装程序.
方法问题已经尝试过
没有VSIX的多项目模板,没有nuget
我能够创建一个多项目模板,它工作正常,除非是时候包括nuget引用,它不起作用.对于没有涉及VSIX的nuget,没有简单/优雅的支持.
具有VSIX的多项目模板,没有根模板
所以我尝试使用VSIX,看起来非常简单.将模板项目添加为zip或解决方案,构建vsix安装程序.但是当我添加第二个项目模板,创建一个多项目模板,构建它,安装模板并尝试创建一个项目时,我意识到它不支持master-sub项目设置,其中一个主项目创建子项目.这是一个很大的问题,因为开发人员必须按依赖顺序创建每个项目.
安装后visual studio 2017
得到他的错误VSIX projects
...任何建议解决问题?
Severity Code Description Project File Line Suppression State
Error The "GetDeploymentPathFromVsixManifest" task failed unexpectedly.
System.Runtime.InteropServices.COMException (0x80070005): ExternalSettingsManager::GetScopePaths failed to initialize PkgDefManager for C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.GetScopePaths(String applicationPath, String suffixOrName, String vsVersion, Boolean isLogged, Boolean isForIsolatedApplication)
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.CreateForApplication(String applicationPath)
at Microsoft.VsSDK.Build.Tasks.ExtensionManagerUtilities.GetSettingsManagerForDevenv(String rootSuffix)
at Microsoft.VsSDK.Build.Tasks.GetDeploymentPathFromVsixManifest.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() MasterData
Run Code Online (Sandbox Code Playgroud) 我为VS 2010创建了一个部署项目模板的扩展.项目模板使用在我基于此模板创建新项目时调用的自定义向导(在特定程序集中).
我想在VSIX中打包包含向导的程序集,以便它可以在模板可以找到的地方部署(我知道GAC不是VSIX的选项).
基本上,如果我将程序集部署到GAC,请安装VSIX,然后创建项目,成功调用向导.如果我在不首先部署程序集的情况下执行相同操作,则在创建项目时项目模板不会找到程序集.
我的问题是:如何使用VSIX包部署项目模板及其所需的程序集?
谢谢您的帮助
编辑:我在安装程序项目中将向导程序集引用的VSIX子路径更改为"ProjectTemplates"并相应地更新了vsixmanifest内容程序集引用.它似乎现在工作.
我正在编写一个Visual Studio 2012扩展,供内部使用,它要求所有程序集都有一个强名称.我很依赖RestSharp(和一些其他的dll),并且因为它不是强命名,我按照加入一个强大的名字了这个.一切都根据流程的输出工作,甚至视觉工作室声称,如果我在项目引用中查看RestSharp.dll的属性,它就会被强烈命名.但是,当我去使用我的扩展时,我得到一个FileLoadException声明:
Could not load file or assembly 'RestSharp, Version=104.1.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
有关如何解决此问题或解决此问题的任何想法?