0

私は次のコードを持っています(請負業者から継承):

public partial class StoredProcedures  
{  
    #if NO_THREAD      
        readonly static String version = "XXXX, Version 1.02, Apr/29/2010";
    #else 
        readonly static String version = "XXXX, Version 0.93, Dec/21/2006";
    #endif

NO_THREADは他のどこにも見つからないようです。これは、SQLアセンブリとしてコンパイルおよびインストールするコードです。それは特別なものですか、それとも単純なものが欠けていますか?

4

6 に答える 6

4

プロジェクトにあるすべてのビルド構成について、 [プロジェクトのプロパティ]->[ビルド]->[一般]->[条件付きコンパイルシンボル]を確認してください。そこにある可能性があります。

于 2012-08-28T23:04:52.367 に答える
1

#defineステートメントを探します。#ifプリプロセッサ条件のドキュメントを参照してください:http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

于 2012-08-28T23:01:50.603 に答える
1

見つからない場合

define #NO_THREAD

コードのどこにいても、請負業者が/defineコンパイラオプションを渡してシンボルを定義していたことが原因である可能性があります。

詳細については、こちらを参照してください(セルからの入力、形式については申し訳ありません):

http://msdn.microsoft.com/en-us/library/0feaad6z.aspx

于 2012-08-28T23:02:03.297 に答える
0

おそらく、c#プリプロセッサディレクティブを確認する必要があります

No_Threadこれは、を使用して定義できるシンボルです。存在する#define No_Thread場合はtrueになり、コンパイル時にこのステートメントがコンパイルされます。それ以外の場合は、次のステートメントがコンパイルされます。#define No_Thread#if NO_THREADreadonly static String version = "XXXX, Version 1.02, Apr/29/2010";

これは通常、デバッグバージョンとリリースバージョンを区別するために使用されます。新しいプロジェクトを作成するときに、VSには2つのバージョンがあることに気づきましたか。コードのどこかにこのようなものを書くと

 #if DEBUG
 Console.WriteLine("DEBUG VERSION");
 #endif

この場合、プロジェクトがデバッグモードの場合にのみ、文字列"DEBUG VERSION"がコンソールに出力されます。これは、プリプロセッサDEBUGを使用して手動で行うとVSがシンボルを挿入するため、この行もコンパイルされるためです。#define

于 2012-08-28T23:02:14.487 に答える
0

NO_THREAD条件付きコンパイルのシンボルです。

これは#define NO_THREAD、、、プロジェクトファイル、またはnantファイル(またはビルドに使用する任意の方法)から取得できます。

定義されている場合、コードの最初の行はC#コードの一部としてカウントされます。そうでない場合は、2番目がです。

それが唯一の出来事である場合、それは削除されたものからの二日酔いだと思いますが、Visual Studioを使用してビルドする場合は、前の開発者がそれを使用した場合に備えて、nantのビルドファイルがないことを確認してください代わりは。

于 2012-08-28T23:02:20.107 に答える
0

これは条件付きコンパイルシンボルです。Visual Studio 2010では、これらはプロジェクトプロパティの[ビルド]ページの[条件付きコンパイルシンボル]テキストボックスに表示されます。おそらく、Configuration Manager構成の1つにこの記号が含まれているか、過去のある時点で含まれています。おそらく、#ifNO_THREADシンボルが存在する場合に、複数のスレッドを使用するコードのブロックを無効にする別の場所があります。

于 2012-08-28T23:02:32.800 に答える