問題タブ [vsix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - Visual Studio 2010でvsix拡張機能の構成データを実装するにはどうすればよいですか?
現在、vsix拡張ツールウィンドウを実装しています。ツールウィンドウで開発者に表示するデータをクエリするためのデータベース接続文字列がまもなく必要になります。この接続文字列を開発者が構成できるようにしたいと思います。開発者が構成設定を変更する可能性は低いため、多くの場合、ファイルで十分です。
slnファイルと同じフォルダーにあるapp.configファイルを使用することは可能ですか?その場合、ファイルをラップするためにいくつかのカスタム構成設定を使用する必要がありますか?NuGetはこのアプローチを実装しているようですが、構成ファイルがどのように使用されているかを確認するための内部アーキテクチャを完全には理解していません。
他のアプローチもいただければ幸いです。
編集:
それ以来、あるソリューションで使用されるツールウィンドウが別のソリューションのプロパティとは異なるプロパティを使用できるように、構成ストアが提供する動的データはソリューション固有である必要があることに気付きました。1つの可能性は、.settingsファイルを使用して、さまざまなソリューションに関連する情報を格納する単一の構成ファイルの場所を格納することだと思います。
visual-studio-2010 - 新しいキャッスル ウィンザー コンテナーの ServiceLocator.SetLocatorProvider を呼び出すと、VSIX パッケージで IServiceProvider の競合が発生する
VS 2010 に基本的な vsix パッケージ プロジェクトがあり、Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase から派生した単純な ServiceLocator があり、Package から派生したクラスの Initialize オーバーライドに登録しています。
問題は、何らかの理由で、コンテナーが私が何も知らない型を解決するように求められていることです。まだ ServiceLocator.Current にコードを実装していませんが、まだ解決するための呼び出しが実行されています。
最初の解決タイプは System.IServiceProvider で、どこかでコンテナの衝突が起こっていると思いました。IServiceProvider が要求された場合に null を返すように、ロケーターの解決オーバーライドにコードを一時的に追加しました。外部コードは、それが何であれ、有効なインスタンスを返さないことを気にしないように見えましたが、解決はいくつかの VSCommands タイプを解決するように求められました。
したがって、同じ appdomain で実行されている 2 つの別個のコンポーネントが両方とも ServiceLocator を使用してコンテナーを登録し、それによって互いに競合が発生する可能性は十分にあると考えています。VSCommands が ServiceLocator を使用しているかどうかはわかりませんが、VS からこの拡張機能を削除すると問題が解決しました。
他のサードパーティの拡張機能の実装者と ServiceLocator の使用の可能性を制御できないため、他の拡張機能が私のコンテナーを呼び出さないように何らかの方法で分離することは可能ですか?
よろしく、
マーク
visual-studio-2010 - アンインストールする手段がない拡張機能を削除する
VS 2010に拡張機能をインストールしていますが、拡張機能マネージャーからアンインストールしたり、プログラムを追加/削除したりするオプションがありません(msiに含まれている場合は、思い出せません)。アドインマネージャには、拡張機能を無効にするオプションがありますが、VS2010を再起動すると表示されます(常に管理者モードで実行されています)。VisualStudio/Extensionsの下のローカルフォルダーも調べました。
この拡張機能のエントリについてレジストリを確認しましたが、何も見つかりません。何ができますか(VS2010の再インストールを除く)?
ありがとう
c# - VSIXインストーラー経由でxsdをインストールするには?
Visual Studio は xsd ファイルを使用して、名前空間に一致する xml ファイルに IntelliSense を提供します。カスタム xml スキーマを作成しました。ユーザーが名前空間を含むそのタイプのドキュメントを編集しているときに、そのスキーマを適用したいと考えています。xsd を手動でどこかに保持でき、インテリセンスを正しく取得できます。しかし、このスキーマを VSIX インストーラーと共に展開して、自動的に適用されるようにしたいと考えています。
これを VSIX でセットアップする必要があります。インストール先のフォルダーはわかっていますが、VSIX を初めて使用するので、特定のフォルダーにコンテンツ "XSD" をインストールする方法があれば完了です。
visual-studio-2010 - WIX を使用して VSIX パッケージを自動的にインストールするにはどうすればよいですか?
アプリケーション用の WIX インストール プロジェクトがあります。私のソリューションの一部として、顧客の Visual Studio にインストールしたい VSIX 拡張機能があります。
私が知らないのは、WIX に VSIX インポーターを自動的に開始させる方法です。
MSDN のアドバイス (方法: Windows インストーラーの展開用に拡張機能を準備し、大規模なインストールの一部として VSIX をインストールする)に従ってみましたが、役に立ちませんでした。どちらにも WIX プロジェクトのガイダンスは含まれていません。
どんな助けでも大歓迎です。
visual-studio-2010 - インストール時に VSIX 拡張機能を自動的に有効にするにはどうすればよいですか?
WIX で生成された MSI を介してインストールする VSIX パッケージを作成しました。
しかし、インストールして VS2010 で見ると、 [ツール] > [拡張機能マネージャー] メニューで[無効]になっており、手動で有効にする必要があります。
どうすればこれを回避できますか?
**編集**
これが私がしたことです:
私は次のようにレジストリからVSInstallDirをキャプチャすることを追加しようとしました:
次のように、target-dir の下にディレクトリ構造を追加しました。
そして、次のように、インストール フォルダー内のコンポーネントに CopyFile 要素を追加しました。
そして、真の要素をマニフェストに追加しました。
これを行うと、拡張機能はインストールされません。
理由はありますか?
visual-studio-2010 - VSIX フレーバー プロジェクトのカスタム .target ファイルのインポートの問題
XML を介した 2 人のカスタム デザイナーを含む VSIX パッケージがあります。このパッケージには、いくつかのカスタム ビルド タスクを使用してビルド時にコードを自動生成するフレーバー プロジェクト システムがあります。
最初に直面した課題は、プロジェクト テンプレートに .targets ファイルをインポートすることでした。パッケージのバージョンが変更され、vsix インストーラーがターゲット マシンのバージョン管理された場所にパッケージをドロップするため、プロジェクト テンプレートの .targets ファイルへの完全修飾パスを指定できません。私が解決できる方法は、パッケージルートパスを使用してユーザー環境変数を追加し、プロジェクトテンプレートでこの環境変数を参照して.targetsファイルをインポートすることでした。警告はありますが、期待どおりに機能します。
注意点は、VSIX 展開プロセス中にこの環境変数を作成する方法です。から派生したカスタム属性でパッケージ クラスを装飾してみましたRegistrationAttribute
。Register メソッドをオーバーライドしてEnvironment.SetEnvironmentVariable()
実行しましたが、開発ボックスでプロジェクトを実行した場合にのみ機能します。どうやら、VSIXInstall.exe は、インストール中に属性レジスタを実行することを気にしません。
誰かがこの問題を解決するためのアプローチを提案できれば素晴らしいことです。私は時間がなくなり、すでに多くのことを試しましたが、成功しませんでした:(
c# - VSIXでの厄介なCOM相互運用の問題
しばらくの間、Visual Studio 2010のVSIXパッケージで断続的なCOMの問題が発生しました。IDEのCOMベースのイベントシンクの1つをサブスクライブしようとすると、次のエラーがランダムにスローされます。
「基になるRCWから分離されたCOMオブジェクトは使用できません」
再現ケースは、このコードに要約されます(明らかに、VSIXで使用する必要があります)。
ネット上で見つけられる同様の問題の多くの説明から、考えられる原因について学びました。これは基本的に、COM相互運用中にRuntimeCallableWrappersとGCが相互作用する方法の副作用です。これは、説明付きの同様の問題へのリンクです。
特に、簡単な回避策を提案しているので、その説明は問題ありません。イベントシンク参照をフィールドに保存して、早期にGCされるのを防ぎます。確かに、多くの人がこの方法で問題を解決したようです。
私を悩ませているのは、私の場合は機能しないということです。私はその理由について本当に困惑しています。ご覧のとおり、念のため、すべてのオブジェクト参照をフィールドに格納しています。それでもエラーは発生します。GC.KeepAlive()
ctorの最後で呼び出しを使用してさらに明示的にしようとしましたが、役に立ちませんでした。他にやるべきことはありますか?
解決策がないと、私のVSIXはランダムにロードに失敗し、ユーザーに1つのオプションを残します。VisualStudioを再起動し、次回はロードされないことを願っています。
どんな助けでも本当にありがたいです!
vsix - 拡張機能内の Visual Studio 2010 内で tfs 作業項目を開く方法は?
VS 2010 拡張機能を開発していますが、チーム エクスプローラーの作業項目エディターで作業項目を開く方法があるかどうかを知りたいですか?
これを行うには、どのコードを呼び出す必要がありますか? 私は無知です。
visual-studio-2010 - プロジェクト サブタイプを実装せずにプロパティ ページをプロジェクト プロパティに追加する
Visual Studio 2010 パッケージを開発しています。私のパッケージは、プロジェクトのプロパティに新しいタブを追加する必要があります。
新しいタブの追加で見つけたすべての例は、プロジェクトのフレーバーまたはサブタイプを実装してタブを追加します。ただし、新しいプロジェクト フレーバーを作成せずにタブを追加する必要があります。他のパッケージも同様にそれを行っているため、これは何らかの形で可能であるに違いないことを私は知っています (たとえば、Code Contracts をインストールすると、新しい [Code Contracts] タブが表示され、Code Contracts パッケージはプロジェクト タイプを変更したり、新しいタブを追加したりしません)。私が見る限りサブタイプ)。
新しいプロジェクト フレーバーを実装せずに、Visual Studio 2010 パッケージからプロジェクトのプロパティにタブを追加するにはどうすればよいですか?
ありがとう、マティアス