标签: vsix

从扩展程序在Visual Studio Designer中的windows.forms.controls上绘制装饰

我编写了一个观察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事件,我只能在子控件周围绘制,因为它们是在父项之后绘制的.

我还想过在控件或ControlDesigners 上使用反射,但我不确定如何挂钩受保护的OnPaintAdornments方法.我不认为IDE开发人员使用那些"肮脏"的技巧.

c# wpf windows-forms-designer visual-studio vsix

18
推荐指数
2
解决办法
1220
查看次数

在Visual Studio 2010 Express中安装扩展或加载项的限制

我安装了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

17
推荐指数
1
解决办法
1万
查看次数

VSIX - 无法加载引用的dll的文件或程序集

我的问题与问题非常相似,只是答案和解决办法对我不起作用.我也在Visual Studio 2012中.

我有一个VSPackage引用另一个项目,它依赖于其他dll.每次我在调试中运行我的包时,都会得到一个异常,即无法找到其他dll.它们位于输出目录中,并且已签名.

我尝试直接通过VSPackage项目引用它们无济于事.

思考?

vspackage vsix visual-studio-2012

16
推荐指数
1
解决办法
5522
查看次数

更新私有图库原子,以便VS显示扩展更新可用

我正在使用Visual Studio Private Gallery向我的公司发布内部VSIX.我的VSIX出现在Visual Studio 2012中"扩展和更新"的"在线"部分,我可以从那里安装它: VSIX可从

但是,一旦安装完毕,我无法弄清楚如何更新我的扩展程序,使其显示在同一对话框的"更新"部分中,也无法弄清楚如何让Visual Studio通知我有可用的更新. VSIX不会出现在

我尝试了以下各种组合:

  1. 增加VSIX本身和atom.xml中的版本号
  2. updated标记内的entry标记更改为当前日期和时间
  3. updated标记内的feed标记更改为当前日期和时间
  4. 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

16
推荐指数
1
解决办法
2297
查看次数

Visual Studio 2015 Update 2打破了EF反向代码工程师vsix

安装最新的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)

entity-framework vsix visual-studio-2015

16
推荐指数
2
解决办法
1万
查看次数

如何在VSIX安装程序中包含NuGet包的程序集?

我正在创建一个Visual Studio 2017自定义签入策略扩展.我目前的解决方案结构如下:

VSIX解决方案结构

注意:我正在利用新的NuGet PackageReference方法,这就是没有packages.config文件的原因.


我相信我已经适当地设置了我的VSIX清单,因为当我没有引用时一切都很完美Microsoft.Net.Http(最初我是在值中硬编码而不是检索值).我不确定为什么Microsoft.TeamFoundationServer.ExtendedClient包含的NuGet包不会引起任何问题,而Microsoft.Net.HttpNuGet包也是如此.

我查看了调试文件夹以查看正在编译的内容,并且我看到每个程序集都被拉入,但是如果我解压缩VSIX(我将其重命名为*.zip并解压缩它),则只包含项目程序集; Nuget引用的程序集未打包在VSIX包中.

我遇到了一些资源,但似乎没有任何工作:

这些问题/答案中的每一个似乎都没有解决我的具体问题.


更新:

我相信用于生成VSIX包的工具可能不支持PackageReferenceNuGet 的新功能.如果我使用旧的packages.config功能,一切正常.我已经放入了UserVoice Ticket来支持新的NuGet功能.

vsix nuget checkin-policy visual-studio-2017

15
推荐指数
2
解决办法
2060
查看次数

带有VSIX Installer和Nuget包的Visual Studio 2012的多项目/解决方案模板

我想有一个多项目模板,它将创建子项目,并将安装nuget依赖项以及安装此模板的vsix安装程序.

方法问题已经尝试过

没有VSIX的多项目模板,没有nuget

我能够创建一个多项目模板,它工作正常,除非是时候包括nuget引用,它不起作用.对于没有涉及VSIX的nuget,没有简单/优雅的支持.

具有VSIX的多项目模板,没有根模板

所以我尝试使用VSIX,看起来非常简单.将模板项目添加为zip或解决方案,构建vsix安装程序.但是当我添加第二个项目模板,创建一个多项目模板,构建它,安装模板并尝试创建一个项目时,我意识到它不支持master-sub项目设置,其中一个主项目创建子项目.这是一个很大的问题,因为开发人员必须按依赖顺序创建每个项目.

c# templates visual-studio vsix visual-studio-2012

14
推荐指数
1
解决办法
6294
查看次数

"GetDeploymentPathFromVsixManifest"任务意外失败

安装后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)

visual-studio vsix

14
推荐指数
2
解决办法
1927
查看次数

使用VSIX为项目模板部署包含IWizard的程序集

我为VS 2010创建了一个部署项目模板的扩展.项目模板使用在我基于此模板创建新项目时调用的自定义向导(在特定程序集中).

我想在VSIX中打包包含向导的程序集,以便它可以在模板可以找到的地方部署(我知道GAC不是VSIX的选项).

基本上,如果我将程序集部署到GAC,请安装VSIX,然后创建项目,成功调用向导.如果我在不首先部署程序集的情况下执行相同操作,则在创建项目时项目模板不会找到程序集.

我的问题是:如何使用VSIX包部署项目模板及其所需的程序集?

谢谢您的帮助

编辑:我在安装程序项目中将向导程序集引用的VSIX子路径更改为"ProjectTemplates"并相应地更新了vsixmanifest内容程序集引用.它似乎现在工作.

deployment wizard visual-studio-2010 vsix

13
推荐指数
1
解决办法
3745
查看次数

强烈命名第三方程序集 - 无法加载文件或程序集

我正在编写一个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)

有关如何解决此问题或解决此问题的任何想法?

.net strongname vsix visual-studio-2012

13
推荐指数
2
解决办法
1万
查看次数