• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c# ビルド直前にコードを置換できますか?)

c#ビルド直前にコードを置換できますか?

このQ&Aのポイント
  • c#初心者による質問です。ビルド直前にコードの置換を行うことは可能でしょうか?例えば、「class 見本クラス」としておいて、ビルド直前に「見本クラス」を「SampleClass」に置換することはできるのでしょうか?詳しい方のアドバイスをお願いします。
  • c#初心者の質問です。ソースコードのビルド直前に「見本クラス」を「SampleClass」に置換することは可能でしょうか?アドバイスをいただけると助かります。
  • c#初心者が質問です。ビルド直前にコードを置換する方法を教えてください。例えば、「class 見本クラス」をビルド直前に「見本クラス」を「SampleClass」に置換することはできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>> ただ、置換を行うプログラムなんてのは、それぞれのファイルにアクセスして >> 読み込み/書き込みを行う1つの完成したアプリケーションのようなものでしょうか? そうです。逆に、そうでないと自動化ができません。完結しないと次のビルドステップに進まないので。 作るのが面倒だったら、どこかから拾ってくればいいんです。 プログラムの引数にファイル名と検索置換文字列を指定してやると勝手に置換してくれるようなものを。

koumei000
質問者

お礼

 回答ありがとうございます。おかげさまで何とかなりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

少なくともVisualStudioでは可能です。 一部の言語拡張系の開発言語ではこの方法が用いられて、ビルド時に自動化されています。 但し、「見本クラス」→「SampleClass」の置換を行うプログラム/マクロを用意する必要があります。 イメージとしては、 1."test1.cs"といった変換前のソースコードをプロジェクトに含めてコーディング(このファイルはビルドから除外する)。 2.コンパイル前処理等で置換を行うプログラムを走らせる。"test1_ttt.cs"が出力される。 3."test1_ttt.cs"を含めたコンパイル処理がなされる。以下略 割と普通に現場で行われてることです。

koumei000
質問者

お礼

 回答ありがとうございます。  なるほど。それなら後者の質問を満足させられそうです。ただ、置換を行うプログラムなんてのは、それぞれのファイルにアクセスして読み込み/書き込みを行う1つの完成したアプリケーションのようなものでしょうか?  マクロは全然知らないので今度調べてみますが…。

全文を見る
すると、全ての回答が全文表示されます。
noname#152572
noname#152572
回答No.1

ビルド前イベントというのを設定できますから、マクロで置き換えなんてのはできそうですね。 ただ・・・それで何をされたいのか皆目検討が付かないのですが・・・。う~~ん

koumei000
質問者

お礼

 回答ありがとうございました。  マクロですか。マクロって、全く触ったことがないんですよね。今度調べてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • オブジェクトコードについて

    コンパイル言語について質問です。 コンパイルされるタイミングはいつなのでしょうか? 現在javaでwebアプリを作成中なのですが、 tomcatに置いたタイミングでclassファイルがオブジェクトコードにコンパイルされているのでしょうか。 それとも、リクエストが来てそのクラスが必要になったときでしょうか。

    • ベストアンサー
    • Java
  • 正規表現を使った置換処理。大文字の直前に「_」を入れたい

    正規表現を使った置換処理です。 大文字の直前に「_」を入れたいと思っています。 例:htmlLinkStr → html_Link_Str WSHとして以下のようなコードを1行記述しました。 WScript.Echo("htmlLinkStr".replace(/([A-Z]+)/g, "_" + RegExp.$1)); しかし「html_ink_tr」としょぼい結果しかえられません。 「RegExp.$1」の使い方が悪いのかもしれません…。 ちなみにVBSでは以下のコードで成功しています。 ので大きくはずしてはいないと思うのですが… Set regEx = New RegExp regEx.Pattern = "([A-Z]+)" regEx.Global = True MsgBox regEx.Replace("htmlLinkStr", "_$1") JavaScriptでの正規表現の使い方に詳しい方よろしくお願いします。

  • C#のビルド方法について質問です。

    IDEをつかわず、コマンドプロンプト上でC#のソースをビルドする時の方法について質問です。 まず以下のようなコードがあるとします。 まずC:\の直下に以下のソースを作成しました。 =================================================== using System; using System.IO; using System.Windows.Forms; namespace Add.TestClass{ public class LibraryClass{ public LibraryClass(){ MessageBox.Show("クラスライブラリコンストラクタの実行"); } } } =================================================== 上記クラスをdllファイルとしてビルドします。 csc /t:library /out:Add.TestClass library.class  と上記のようにビルドしました。するとAdd.TestClass.dllというファイルが確かにできあがりました。 次にこれを実際に実行するためのファイルをつくりました。 それが以下になります。 同じくC:\直下に以下のようなソースを作成します。 =================================================== using System; using System.IO; using System.Windows.Forms; using Add.TestClass; public class MainClass{ public static void Main(String [] args){ LibraryClass obj = new LibraryClass(); } } =================================================== このファイルをビルドします。 csc /r:Add.TestClass.dll main.cs としてビルドし、その後 mainというファイルを実行しました。 するとキチンとMessageBoxで MessageBox.Show("クラスライブラリコンストラクタの実行");が実行されました。 ここまでは問題ないのですが、この場合 main.exeファイルとAdd.TestClass.dllというファイルが 同じ階層に存在するような状態になっているのですが、これを main.exeファイルのある階層にdllというディレクトリを作成し そのdllの中にAdd.TestClass.dllというファイルをおいた階層状況でmain.exeファイルを実行したいのです。 そのためにまず、 csc /r:”C:\dll\Add.TestClass.dll" main.cs 上記のようなビルドオプションでビルドしてみたのですが、ビルドはとおりましたが -------------------------------------------------------------------------------------------------------------------- ハンドルされていない例外: System.IO.FileNotFoundException: ファイルまたはアセン ブリ 'Add.TestClass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'、ま たはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりませ ん。 場所 MainClass.Main(String[] args) -------------------------------------------------------------------------------------------------------------------- というエラーがでました。 このdllファイルを特定の任意のディレクトリ内において、main.exeを実行してうまく動くようにするためには どのようなビルドオプションをつけたらいいのでしょうか? よろしくご教授お願いいたしま。

  • VisualStudio2008でフォルダ違いで同じソースコードファイ

    VisualStudio2008でフォルダ違いで同じソースコードファイル名 下記のようにフォルダ違いで同じファイル名のソースコードがるある場合は、 VisualStudio2008では認識してくれないのでしょうか? +type0+Type.h |    +Type.cpp +type1+Type.h      +Type.cpp それぞれのソースコードはクラス名も一緒なのですが、namespaceでわかられています。 namespace NType0 {   class CType   { } namespace NType1 {   class CType   { } 後から追加したType.cppでは意図的にCTypehogehoee::関数名として コンパイルエラーが起きるように記述しましたがVisualStudioはエラーを 吐きません。 ファイル名をユニークにしたところ正常にビルドできました。 上記について問題を解決する方法はあるのでしょうか?

  • VBScriptを用いた改行コードを含む置換方法について

    お世話になります。 VBScript初心者です。 下記の通り、VBスクリプトを用いてファイルの文末の「カンマカンマ改行」を 「改行」に置換したいと思っていますが、上手くできません。 VBScriptで正規表現を用い、改行コードを含んだ置換方法を教えていただきたく思います。 【置換前】 AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○,, 【変更後】 AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○ 現在のスクリプトは、 myStr1 = "AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○,," '(1)RegExp オブジェクトを作成する Set objRE = New RegExp '(2)検索パターンを設定     objRE.Pattern = ",+\n"       '(3)大文字/小文字を区別しない objRE.IgnoreCase = True   '(4)全体を検索     objRE.Global = True     '(5)置換を実行 myStr2 = objRE.Replace(myStr1,"\n") '(6)一行書込み objFile.WriteLine(myStr2)      となっています。(部分的に抜粋しましたが各変数の定義はできています) (2)の検索パターンに",+\n"、(5)の置換を実行に"\n"を定義しましたが置換できませんでした。 他のパターンとして (2)の列に",+\x0A"、(5)の列に"\x0A" (2)の列に",+\x0d"、(5)の列に"\x0d" も行ってみましたが置換できませんでした。 なお、置換対象のファイルはtxtファイルまたはCSVファイルを考えています。 どなたかご教示いただきたく、よろしくお願い致します。

  • C++ クラスをメンバにもつクラスについて

    お世話になります。C++初心者でうまくコードが書けません(><) クラス1と2があり、クラス1のメンバにはクラス2があります。 メインでクラス1をインスタンス化してクラス2のfunc2を呼び出します。 func2ではクラス1のインスタンスから呼び出された場合にクラス1の m_int1を取得します。 Class Class1{ public:  int m_int1;  Class2 m_Class2; }; Class Class2{ public: void func2(); }; void Class2::func2(){  /*ここの記述方法が分かりません*/  /*C1から呼び出されたらC1のm_int1に100を入れる*/  /*以下間違え*/  class1 C2_1;/*別のclass1のオブジェクトなのでこれに入れてもダメっぽい*/  C2_1.m_int1 = 100; } void main(){  class1 C1;  C1.m_int1 = 10;  C1.m_class2.func(); } C1.m_class2.func()の中から呼び出したC1にアクセスする方法が 分かりません(TT)。実体がまだあるのだからアクセスする方法は あると思うのですが・・・ どなたかよろしくお願いします。

  • C++ビルドエラー

    VC++6.0コードを変更をしないでVS 2008 C++(Professional Edtion)でビルドするとコンパイルはパスしますが、2件のワーニングがでます。 Win VistaでVS 2008 SP1のコンディションです。 アドバイスをくれませんか? 1. warning C4996: 'CWinApp::Enable3dControlsStatic': CWinApp::Enable3dControlsStatic is no longer needed. You should remove this call.   #ifdef _AFXDLL Enable3dControls();   #else Enable3dControlsStatic();   #endif c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(4821) : 'CWinApp::Enable3dControlsStatic'の宣言を確認して ください。 >クラスに新しい定義が必要ですか? 2. warning C4244: '=' : 'ULONGLONG' から 'LONG' への変換です。データが失われる可能性があります。   LONG lSize = 0L; // ヘッダ部を読み込みます。 TRY { lSize = m_pCFile->Seek( 0L, CFile::end ); m_pCFile->SeekToBegin(); . . >修正がわかりません。 以上

  • シンボルを解決できません(初心者)

    一つのプログラムに対して、いくつかのファイルに分けて 記述されているとき、 たとえば、ファイル A.java と B.java があって 【A.java】 package shop;  ・  ・  public class Shop {   ・   ・   ・ } 【B.java】 packeage shop;  ・  ・ public class Buy(Shop shop){ } という感じで、A.java内で定義したクラス型を他のファイルで使うと、 コンパイル時に、「シンボルを解決できません」というコンパイルエラーが出て コンパイルできません。 こういう場合はどうすれば、良いのでしょうか? 初心者なので、非常に初歩的な質問かと思いますがよろしくお願いします。

    • ベストアンサー
    • Java
  • C#継承について

    初心者です。クラスでテキストボックスを継承し、コンストラクタで値を設定していますが、 下記のコードをフォームに配置しても、テキストがabcにならないのですが、一回実行するとなります。なぜでしょうか。 できれば配置時にはすでにabcになってほしいのですが、お願いします。 public class Class1 : TextBox {   public Class1()   {     this.Text = "abc";   } }

  • C#プログラムファイルの文字コード

    まず http://okwave.jp/qa/q8592830.html 上記内容で、スクリプト言語のスクリプトファイルの文字コードの質問をしたものです。 PHPやunixシェルは内部的に文字コード情報をもたたず すべての文字列をバイト列として保持しており pythonでは,文字列は内部的にオブジェクトが文字エンコーディング情報を持つ必要があるため事前にマジックコメントでスクリプトエンジンに教えてやる必要がある・・と 回答をいただきました。 それではたとえばjavaに置き換えると javaはコンパイルすると文字列をすべてunicodeのコードポイントに変換するようです。 そのためjavaのソースファイルをコンパイルするときに javac -encodingというコンパイルオプションがあるようです。ここで指定された文字コードからunicodeへと変換されていると・・・・。 ではC#はどうなのでしょうか? cscコンパイラのコンパイルオプションには文字コードを指定するようなオプションは見つかりませんでした。 しかし using System; using System.Windows.Forms; namespace test{ class AClass{ public string property = ""; public AClass(){ } } class TestClass{ public static void Main(string [] args){ AClass obj = new AClass(); obj . property = "文字列 "; Console.WriteLine(obj. property); MessageBox.Show(obj.property); } } } 上記のようなコードをUTF-8およびSJIS-winでそれぞれ保存して、コンパイル後実行しても 文字化けすることなく「文字列」という表示がされました。 ただし、EUC-JPで保存したファイルをコンパイルすると、なんと文字化けしてしましまいました。 これはなぜでしょうか? C#コンパイラはどこでどのようにコンパイル対象のプログラムファイルの文字コードを知り得ているのでしょうか? そしてなぜ、UTF-8/SJIS-winは問題なく文字列と表示されたにもかかわらず EUC-jpだと文字化けしたのでしょうか? よろしくご教授ください。 ちなみにC#のコンパイラはコマンドプロンプロトから直接CSC.exeを実行しています。

    • ベストアンサー
    • Java