web-dev-qa-db-ja.com

編集および続行機能がVisual Studio 2010で機能しなくなった

Visual Studio 2010でVisual Studioのエディットコンティニュー機能が停止したため、問題の原因がわかりません。

C#を使用してWindowsアプリケーションプログラムで作業しています。このアプリケーションは、最初はVisual Studio 2008で開発され、後にVisual Studio 2010にアップグレードされました。

.NET Frameworkを3.5から4.0にアップグレードするまで、エディットコンティニューを含め、すべてが正常に機能していました。

ここでデバッグモードを使用するときに、IDEのコードの行を変更すると、次のメッセージが表示されます。

コンパイルできない編集が行われました。コンパイルエラーが修正されるまで、実行は続行できません。

実際、コンパイルエラーはなく、更新を実行するにはVisual Studioを再起動する必要があります。

編集して続行するにはどうすればよいですか?

43
Cracker

エディットコンティニュー機能は、dynamicキーワードでは機能しません。

dynamicパラメーターを使用するメソッドを削除しようとしたところ、変換されたプロジェクトがVisual Studio 2010で機能するようになりました。

インターネットの調査によると、これはマイクロソフトに報告されたバグです。以下のリンクに詳細が記載されています。

20
Cracker

ソリューションエクスプローラービューで、参照の各参照を右クリックし、[プロパティ]を選択します。プロパティビューで、Embed Interop TypesのフィールドにFalseと署名します。これは私にとってはうまくいきます。

43
Dianyang Wu

私は昨日Microsoftのプロファイラーを使用していましたが、その後「編集して続行」機能がなくなりました。数時間の苛立ちの後、コマンドプロンプトから VsPerfCLREnv /globaloffコマンドを実行してコンピューターを再起動する必要があることに、ようやく気付きました。今私は私の編集を持っており、未来を続けています。ちなみにターゲットプラットフォームとは関係ありません。それは手間のかからない任意のCPUに設定されたターゲットプラットフォームで動作します。

5
user1690792

Excelファイルがいくつかありました"embed interop types" == true。 falseに変更したら、編集して作業を続けます。

5
Jazz

Visual Studio 2013でこの問題が発生しました。

  • ソリューションを閉じて再度開くだけでうまくいく場合もありますが、うまくいかない場合
  • visual Studioの再起動(ソリューションを閉じる、Visual Studioを終了する、Visual Studioを再度開く、ソリューションを再度開く、エディットコンティニュでデバッグを再試行する)で修正されました。

私の場合、埋め込まれたInteropタイプがなく、コードにdynamicキーワードがなかったため、完全なソリューションのクリーンを実行しましたが、成功しませんでした。私は何度も実行、デバッグ、再起動していたため、メモリに何らかの影響があった可能性があります-Visual Studioを閉じるのに1分以上かかり、その間ディスクがスラッシングしていました(おそらくメモリページング演奏する)。

4
CJBS

VSによって生成されたすべてのファイルをクリーンアップしてみます。そのため、binおよびobjディレクトリを削除し、*.suoおよび*.userファイルも削除します。これらのファイルは自動生成されるため、何も影響はありません(ただし、他のファイルが誤って入力された場合に備えて、すべてのファイルのバックアップを作成します)。

時々それらのファイルは破損する可能性があり(古いVC++などではかなり頻繁に発生していました)、その後VSは非常に面白い動作を開始します。

2
Hans Olsson

vS2017コミュニティで作業しているときにこの深刻な問題が発生しました。既存のプロジェクトを移植すると、タグEmbedInteropTypesが.csprojファイルにまだ含まれていない可能性があるため、検索は無駄です。その場合は、テキストエディタを使用して、末尾のタグをプロパティグループDebug | x86(または使用するもの)の.csprojに追加します。

前:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DocumentationFile>bin\Debug\MyProject.XML</DocumentationFile>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>Prompt</ErrorReport>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>

後:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DocumentationFile>bin\Debug\MyProject.XML</DocumentationFile>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>Prompt</ErrorReport>
    <Prefer32Bit>false</Prefer32Bit>
    <EmbedInteropTypes>false</EmbedInteropTypes>
  </PropertyGroup>

これは、ソリューションに属するallプロジェクトで行う必要があります!

2
Andy3D

上記の解決策をすべて試しましたが、どれもうまくいきませんでした。ただし、Visual Studioでbinおよびobjectフォルダーを削除を実行して再度実行すると、機能し始めます。

2
Bopy

この投稿は古いことを理解していますが、最近この問題が発生しました。この ブログ投稿 で修正方法を示しています。

  • objフォルダーを削除します
  • binフォルダーを削除します。ライブラリ、データファイルなどをコピーして、削除後にフォルダーに貼り付けることができます。
  • VSから、メニューソリューション->クリーンソリューション

これは私にとって何度も機能します。

2
Hao Nguyen

私の状況では、誰かがプロジェクトの出力への参照を参照リストに追加しました。ソリューションエクスプローラーで、[ProjectName]\References for [ProjectName *]を確認して削除します。

プロジェクトが自身のコピーのコードに依存している場合、「編集して続行」することはできません。警告リストでは、これが問題の原因である場合、「インポートされたタイプと競合しています」というメッセージが表示される場合とそうでない場合があります(大規模なプロジェクトの場合)。

1
Griknok

[ツール]-> [オプション]-> [デバッグ]-> [全般]で[ネイティブ編集を続行]をオフにする必要がありました。

enter image description here

1
voxoid

Visual Studio 2015では、.vsフォルダー(新しいスタイルの.suoファイルがある場所)を削除し、すべてのbinとobjを削除し、さらにninstalled Resharper 2015も削除しました。エディットコンティニューが帰ってきました。

(付記:インテリセンスは現在、ほぼ瞬時にオートコンプリートを表示していますが、以前は2〜5秒かかっていたため、リシャーパーの障害であり、おそらく無関係です...)

1
Thierry_S

私にとってこれは、Nugetが参照されているNet Standardプロジェクトへの(Net Framework用にビルドされた)パッケージのダウンロードに失敗したことが原因でした。 Nugetが無限ループに入りました(出力ウィンドウを見てください)。

ソリューションは、「自動パッケージ復元」設定をオフにすることでした: https://developercommunity.visualstudio.com/content/problem /26638/nuget-infinite-loop.html

この設定にアクセスするには[ツール]> [オプション]> [NuGetパッケージマネージャー]> [全般]

1
Declan Taylor

VS2013では、デバッグオプションで[マネージ互換モードを使用する]を有効にする必要がありました。これは、.Net 2アセンブリを参照する.Net 4プロジェクトがあるためだと思います。

同じソリューションの別のプロジェクトでは、プロジェクトのプロパティで[TRACE定数の定義]をオフにする必要がありました。

1
AndrewS

Visual Studio 2017でもこのエラーが発生する場合

動的/ポータブルクラスライブラリ/ Nugetパッケージまたは依存関係の問題はありません。 Visual Studioによって強調表示されたエラーや警告はありません。

これと 他のスレッド およびWebページに投稿されたすべてのソリューションの試行に何時間も費やした後、私のために機能した唯一のソリューションはチェックインしてワークスペースを削除し、Map&Get再び

ワークスペースを削除するには、Source controlAdvancedWorkspaceRemove

私はVisual Studio 2017 Communityを最新の状態で使用しており、新しいマシンに比較的新しくインストールした後(1週間、数労働時間)に使用しています。


上記のソリューションの前にテストしたが成功しなかった方法

  • Visual Studioオプションで編集と続行が有効になっていることを確認しました。チェックを外してもう一度チェックします
  • ソリューション内のすべてのプロジェクトのbinとobjを削除する
  • すべてをクリーンアップして再構築し、VSを再起動/上記と組み合わせて再起動
  • this に触発された、プロジェクトのコンパイルオプションとNugetパッケージおよびDLL互換性のチェック
  • 依存関係の問題やその他の問題をテストするために、プロジェクトをさまざまな組み合わせでアンロードする( this に触発された)
  • ソリューションを削除して再ダウンロード(ワークスペースを削除せずに)
  • 相互運用タイプを埋め込むためにfalseに署名
  • 説明されているように<_ResolveReferenceDependencies>trueに設定します ここ
  • 上記とVSの再起動および再起動の組み合わせ

この後、チェックインを行い、同じバージョンのVisual Studio(2017 Community)を実行している別のマシンにソリューションをダウンロードしました。エディット・コンティニューの問題が発生しなかったので、ワークスペースを削除しました。

0
alexlomba87

私の場合、デバッグオプションの「元のバージョンと完全に一致するようにソースファイルを要求する」のチェックを外すでした。 VS Community 2017はこちら。

0
Sinus Mackowaty

参照されているプロジェクトのアセンブリバージョンから*を削除すると、問題が解決しました。

Githubから:

「VBと[Assembly:AssemblyVersion(1.2.3。* ")を含むC#プロジェクトの組み合わせでこの問題を再現しました。)VBプロジェクトこの設定でC#プロジェクトを参照すると、物事が崩れ始めます。逆に同じ問題があるようです。 "-rhuijben

https://github.com/dotnet/roslyn/issues/28224

(フラグが立てられるリスクがあるため、私たちは10年以上にわたってVSエディットコンティニューの問題に苦しんでいるようです。MicrosoftVisual Studioチームは、これが発生したときに詳細な情報を提供することで開発者を支援するのに十分な配慮をしていなかったので、私には衝撃的です)

0
yodag123

上記のすべてを試しましたが、うまくいきませんでした。それは明らかにいくつかの低レベルのデバッグオプションを有効にするためでした(レジスタを表示...)

ツール->インポートとエクスポートの設定->すべての設定をリセット

それを解決しました

0
smirkingman

上記を読むと、私のUIプロジェクトには「Embed Interop Types」== trueのShell32があります。私はそれをfalseに変更し、「編集して続行」が機能し始めました。

0
J Frisby

ソリューションエクスプローラービューで、参照の各参照を右クリックし、[プロパティ]を選択します。プロパティビューで、Embed Interop TypesのフィールドにFalseと署名します。これでうまくいきました。

0