3

とりわけ、C++ プロジェクトをソリューションに追加するアドインを作成しました。

c# または vb.net プロジェクトを含むソリューションに C++ プロジェクトを追加する際に問題があります (これらのソリューションをドット ネット ソリューションと呼びます)。

envdte 自動化なしで、すべてこれを行ったと確信しています。

c++ プロジェクト (サポートされているプラ​​ットフォーム Win32 および x64 を使用) を dot net ソリューションに追加します。構成マネージャーを見てください->ドットネットソリューションにはx86とx64しかないため、x64構成は正しいですが、x86構成では、c++プロジェクトのWin32ではなく、代わりにx64が表示されます!!!!! そうそう、VSはこれが機能しないことを知っているほど賢く、ビルドするためにこの構成を選択しません!!!!

これを手作業で行っている場合は、開発者として十分に賢くチェックする必要があります。しかし、このプロジェクトを追加する自動化を構築しようとしています。つまり、ユーザーはこのバグに気付いていない可能性があり、ソリューションを構築しますが、失敗します。

プラットフォームを変更しようとしましたが、読み取り専用です。

これは私がこれまでに見つけた唯一のものです:

SolutionConfiguration config = solution.SolutionBuild.SolutionConfigurations.Item("Debug");

string msg = "";

foreach (SolutionContext context in config.SolutionContexts)
{
  msg += context.ProjectName + context.ConfigurationName + context.PlatformName + context.ShouldBuild;
  context.ConfigurationName = "Debug";  // I can modify this but I don't want to
  if(context.PlatformName == "x64" && !context.ShouldBuild) // this must be the wrong platform
  {
    // I'd like to do that but it won't even compile
    context.PlatformName == "Win32";   // <--- intellisense says error
    context.ShouldBuild = true;        // compiles but checkbox doesn't get set
  }
}

構成行全体を削除して新しい行を追加しようと考えましたが、その方法が見つかりません...

「 」が見つかりましConfigurationManager.DeleteConfigurationRow Methodたが、「デバッグ」または「リリース」構成のみが削除されます... http://msdn.microsoft.com/en-us/library/ash2539k(v=vs.100).aspx

(それは私が望んでいることではないと思います - 特定のプラットフォームに関連する特定の構成のみを削除する必要があります - または、すべてのプラットフォームが x64 として追加されたため、「ShouldBuild = False」またはプロジェクトとしてマークされたもの) x86 ソリューション構成に対応する構成. すべての構成を削除すると... それは機能しないはずであり、それでも... 次に何をすればよいですか?)

" ConfigurationManager.AddConfigurationRow Method" - プラットフォームを指定するものは何もありません... - 行を削除すると仮定すると、どうすればそれを正しく追加し直すことができますか?

4

2 に答える 2

0

これには解決策がありますが、VS2012 以降のみです。VS2012 の時点で、EnvDTE.SolutionContext.ConfigurationName プロパティを "configuration|platform" の形式に設定して、ソリューション構成で特定のプロジェクトのターゲット構成とプラットフォームの両方を設定できるようになりました。

この問題の解決策を自分で探しているときに、これに対する答えを見つけました。この回答を提供した元のソースはhttp://www.mztools.com/articles/2013/MZ2013014.aspxにあります。より長い記事と例があります。

于 2015-10-31T13:16:06.710 に答える
0

今のところ、sln ファイルを変更しています -

ソリューションを閉じ、テキスト ファイルを編集して、再度開く必要があります。

それは理想的ではありません - 誰かが適切な解決策を提案できるなら、私はそれを感謝します.

于 2013-06-10T23:58:27.543 に答える