c#による実行ファイルの作成方法
- c#による実行ファイルの作成方法について、visual c# 2010 expressを使用してプログラムをビルドする際にエラーが発生しました。コマンドプロンプトから実行する際に「'test.exe' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というエラーメッセージが表示されます。test.exeが作成されていないためコマンドライン引数が渡せない可能性がありますが、解決策がわかりません。何かヒントを教えてください。
- visual c# 2010 expressを使用してc#のプログラムをビルドし、コマンドプロンプトから実行しようとしていますが、test.exeが作成されていないために実行できません。試したこととして、フルパスでの入力やcscコマンドを試してみましたがうまくいきませんでした。解決策やヒントがあれば教えてください。
- c#による実行ファイルの作成方法に関して、visual c# 2010 expressを使用してプログラムをビルドする際にエラーが発生します。コマンドプロンプトから実行する際にtest.exeが見つからないというエラーメッセージが表示されます。test.csは保存した状態です。解決策やヒントがありましたらお教えください。
- ベストアンサー
c#による実行ファイルの作成方法
using System; class test { public static int Main(string[] args) { int x = args.Length; for (int i = 0; i < x; i++) Console.WriteLine("{0}, {1}", i, args[i]); return 0; } } 上記のプログラムをvisual c# 2010 expressで ビルドした後、コマンドプロンプトから test.exe aaa bbb ccc と入力し引数を渡して呼び出そうとしたのですが、 「'test.exe' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されうまくいきませんでした。 test.csを保存したうえで今度はフルパスでの入力や、 csc test.csなども試してみましたが、ダメでした。 参考書には「ビルドをすることでexeの実行ファイルが作成される」と書かれているのですが、 PC内にtest.exeは見当たりません。 コマンドライン引数が渡せないのは実行ファイルが生成されていないためだと思うのですが、 まだ始めたばかりで解決の糸口もわからない状況です。 何かヒントになるようなことでもいいので教えていただけると助かります。
- maincontrolled
- お礼率57% (4/7)
- C・C++・C#
- 回答数5
- ありがとう数2
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
プロジェクトの中の実行ファイルができる、 binフォルダ下のdebugフォルダの名前指定が長すぎて面倒なときは、 エクスプローラでdebugフォルダのとこを右クリック、プロパティで出てくる 「場所」ってとこのc:\から始まるところをドラッグしてコピー、 コマンドプロンプトを起動して 「cd (スペース)」と入力、右クリックして張り付けると速いですよ。 或いはVisualStudio2010で作るプロジェクトなどは Cドライブ直下にWorspaceみたいな名前のフォルダを作って そこでプロジェクトを作るようにしたり、 できた実行ファイルだけをc:\Workspaceにコピーしたりすると 場所が分かりやすくて cdなどのDOSコマンド入力も 実行そのものもラクかもしれません。 <以下はおまけで> あとはプログラムのreturn 0;の一つ前の行に Console.ReadLine(); を入れて、 VisualStudi2010のメニュー[プロジェクト]-[アプリケーション名のプロパティ]で開く画面の中に デバッグというタブが左側に出てくるのでそれをクリック、 コマンドライン という項目に aaa bbb ccc と実行したいアーギュメント(引数)を随時入力してあげて保存、 ビルドした後 緑の横△(実行)ボタンを押すとコマンドプロンプト(コマンドコンソール)画面が残った上に結果も見れて ちょっとハッピーになれるかもしれません。
その他の回答 (4)
- wormhole
- ベストアンサー率28% (1622/5659)
>ただおそらく原因はご指摘のようにディレクトリのない場所で実行しようとしたためだと思います。 文意が変わっちゃってますが・・・ 「ディレクトリのない場所で」ではなくて「ConsoleApplication1.exeのないディレクトリで」なんですけど・・・ ディレクトリの意味わかってらっしゃいますか?(わからなかったら調べてください) >ConsoleApplication1.exeの保存されているディレクトリは見つかったのですが、 >そこへソースコードを保存してもコマンドプロンプトからパスが通りません。 そんなことをしてもパスは通りません。 ソースファイルは実行ファイルを作成するための元となるものですが実行ファイルを実行することには何の関係もないです。 >ディレクトリのある場所からの実行というのはどのようにすれば良いでしょうか? cdで、ConsoleApplication1.exeのあるディレクトリに移動してください。 コンソールアプリケーションをつくるのならcmd.exeの最低限のコマンドは覚えた方がいいと思いますよ。
お礼
ありがとうございました。 何とかパスを通すことができました。
- wormhole
- ベストアンサー率28% (1622/5659)
>コンソールアプリケーションからプロジェクトを新規作成してみたのですが、 >やはりコマンドプロンプトから引数を渡して呼び出すことができません。 具体的にどう実行しようとしたんですか? ConsoleApplication1.exeがないディレクトリで実行しようとしたとかいうオチのような気がするんですけど・・・ >いったん基本設定に戻し、ビルドの出力元を表示すると、 >確かにConsoleApplication1.exeが確認できるのですが、スタートメニューの >エクスプローラからコンピュータの検索をしてもファイルが見つかりません。 「コンピュータの検索」ってコンピュータを検索ものでファイルを探すものじゃなかったような・・・ ビルド時に ------ ビルド開始: プロジェクト: ConsoleApplication1, 構成: Debug x86 ------ ConsoleApplication1 -> C:\Users\~\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe ========== ビルド: 正常終了または最新の状態 1、失敗 0、スキップ 0 ========== のようなログが出力されると思うのですが、そこに出力されているディレクトリは探してみたんでしょうか? なんだか基本的な入門書から始められた方がよさそうな。
補足
>具体的にどう実行しようとしたんですか? プログラムを作った後スタートメニューのアクセサリからコマンドプロンプトを呼び出し プロジェクト名(ConsoleApplication1.exe aaa bbb ccc)と入力しました。 ただおそらく原因はご指摘のようにディレクトリのない場所で実行しようとしたためだと思います。 >ディレクトリは探してみたんでしょうか? ConsoleApplication1.exeの保存されているディレクトリは見つかったのですが、 そこへソースコードを保存してもコマンドプロンプトからパスが通りません。 ディレクトリのある場所からの実行というのはどのようにすれば良いでしょうか?
- Hayashi_Trek
- ベストアンサー率44% (366/818)
作成されたexeの在るフォルダに移動していないんではないでしょうか? コンソール画面で、DIR コマンドでexeが存在するか確認しましたか? 通常、Visual Studio 2010 でコンパイルした場合、exeファイルは ソースの在るフォルダの下のbin\Debug、または bin\Release フォルダに作成されます。
補足
>DIR コマンドでexeが存在するか確認しましたか DIRコマンドでビルド時に表示された出力元のパスを入力してexeを確認したところ、 「指定されたパスが見つかりません。」と表示されました。 指摘していただいたようにexeのあるフォルダに移動していないことが原因だと思います。 作成したexeのフォルダへ移動するにはどのようにすれば良いでしょうか? >ソースの在るフォルダの下のbin\Debug、または bin\Release フォルダに作成されます。 Microsoft Visual C# 2010のprogramsというフォルダにソースコードを保存してあるのですが、 フォルダの下にDebugやReleaseといったフォルダはありませんでした。 ソリューションエクスプローラのすぐ下にある 「すべてのファイルを表示」というアイコンをクリックしたところ、 binというフォルダが表示され、そこにDebugとReleaseがありました。これは関係ありませんか?
- wormhole
- ベストアンサー率28% (1622/5659)
プロジェクトはどのようにして作られてます? 私が使ってるのはVisual Studio 2010なので参考程度にしかならないかもしれませんが C#コンソールアプリケーションのプロジェクトを新規作成した際にできるファイルはProgram.csでビルドして作成される実行ファイルは プロジェクト名.exe なんですけど。 ↓はプロジェクト名 ConsoleApplication1 で作成される実行ファイルは ConsoleApplication1.exe using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } }
補足
普段は新しいプロジェクトから「空のプロジェクト」を開き 「コードファイル」を追加して使用しています。 コンソールアプリケーションからプロジェクトを新規作成してみたのですが、 やはりコマンドプロンプトから引数を渡して呼び出すことができません。 いったん基本設定に戻し、ビルドの出力元を表示すると、 確かにConsoleApplication1.exeが確認できるのですが、スタートメニューの エクスプローラからコンピュータの検索をしてもファイルが見つかりません。
関連するQ&A
- C#初心者です。
はじめまして。C#初心者です。よろしくお願いいたします。 作った「.cs」ファイルをコマンドプロンプトで実行しようとしたのですができません。 Framework(v1.1)をダウンロードして、「csc.exe」があるディレクトリにパスを通したのですが、cscは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません、と表示されます。どのようにしたら使えるようになるのでしょうか?わかる方いましたらよろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 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を実行してうまく動くようにするためには どのようなビルドオプションをつけたらいいのでしょうか? よろしくご教授お願いいたしま。
- ベストアンサー
- Microsoft ASP
- 独習C 実行できない。
はじめまして。プログラミング初心者です。 先日独習Cという本を買ったのですが、その付属CD-ROMに添付されているGNU C compilierを使って実行しようとしてるのですが、何度本の通りにやってもうまくいきません。 簡単なプログラムを作ってTYC4THフォルダの中のsampleフォルダにtest.cというソースファイルを保存しました。 本によると、 ・ 読み取り専用の属性を解除 ・ソースファイルを保存したディレクトリに移動 ・gcc test.c と入力 ・a.exe と入力すると実行される となっています。 gcc test.cまではいいのですが、a.exeと入力すると 'a.exe'は、内部コマンドまたは外部コマンド 操作可能なプログラムまたはバッチファイルとして認識されていません。 と表示されます。どうすればいいのでしょうか?;;
- 締切済み
- C・C++・C#
- 実行ファイルに値を渡す方法
実行ファイル(EXE)に実行時にパラメータとして値を渡したいのですが、方法がわかりません。 コマンドライン引数を使用するのでしょうか?
- ベストアンサー
- Visual Basic
- VB2010からコマンドの実行方法
環境 VisualBasic2010Express WindowsXPSP3 前提 あるプログラムをインストールしていると使えるコマンドがあります。 コマンドプロンプト上から、バッチファイルを実行すると正常動作します。 仮に j.bat とします。 内容は dxf -o -s c:\test\test0.dxf dxf -o -s c:\test\test1.dxf dxf -o -s c:\test\test2.dxf こんな感じです。 dxfの本体は、とあるフォルダにあるdxf.exeと思われます。 (同名ファイルが複数あるので、特定できていません) パスが通っているのか、カレントディレクトリ(?)に関係なく実行可能です。 このバッチファイルを実行すると処理は正常です。 現状 VBでボタンを押したらバッチファイルと同じ処理をするプログラムを作りたいのですが 実行する内容が毎回変化します。(dxfコマンドの引数が変わる) よって同じバッチファイルは使えません。 Dim Buffer(2) As String Dim Ret(2) As Integer for i =0 to 2 Buffer(i) = "dxf -o -s c:\test\test" & i & ".dxf" Ret(i) = Shell(Buffer(i), vbNormalFocus) next i こんなプログラムですが、処理がされてません。 コマンドプロンプトは一瞬3個開きます。 dxfをフルパスで記述しても同じです。 質問(1) コマンドプロンプト上にメッセージが出ているようなのですが 一瞬で消えるので読めません。 コマンドプロンプトを閉じない方法はありませんか? なければ出力を残す方法はありますか? 質問(2) バッチファイルを毎回生成して、 そのバッチファイルをShellコマンドで実行すれば動くのかも知れませんが 他に良い方法はありませんか? よろしくお願いします。 私は、VB2010は初めて。 VB6で2個プログラムを作った程度です。 コマンドプロンプト関連(?)は初めてです。
- 締切済み
- Visual Basic
- C#のコマンドラインの分割コンパイルと実行について
コマンドラインでC#のプログラムをコンパイルと実行する方法 mainが1つでsubが1の場合は以下にある。 http://d.hatena.ne.jp/taka_2/20080124/p6 mainが1つでsubが2つの場合はコマンドはどうするか。 以下に使用したコマンドを示す csc /target:library sub1.cs csc /target:library sub2.cs csc /R:sub1.dll /R:sub2.dll main1.cs とすると error CS0246: 型または名前空間名 'sub1' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 のエラーメッセージが表示される。 わかっている方がおりましたら、教えて下さい。 以下にプログラムを示す。 //---------------------------------------------------------------------------- // mainファイルの内容 using System ; using System.Text; using System.IO; using sub1 ; // subの名前空間を指定(分割コンパイル用) using sub2 ; // subの名前空間を指定(分割コンパイル用) namespace main1 { class Program { static void Main(string[] args) { int a = 10 ; int b = 5 ; sub1.dfsub_cs1 df1 = new sub1.dfsub_cs1() ; // sub1のクラスを確保(分割コンパイル用) sub2.dfsub_cs2 df2 = new sub2.dfsub_cs2() ; // sub2のクラスを確保(分割コンパイル用) Console.Write("add {0,3:D} * {1,3:D} = {2,5:D}\n", a,b, df1.multiply( a, b) ); Console.Write("add {0,3:D} / {1,3:D} = {2,5:D}\n", a,b, df2.divide( a, b) ); return ; } } } //---------------------------------------------------------------------------- // sub1ファイルの内容 namespace sub1 { public class dfsub_cs1 { public int multiply(int a, int b ) { return a * b ; } } } //---------------------------------------------------------------------------- // sub2ファイルの内容 namespace sub2 { public class dfsub_cs2 { public int divide(int a, int b ) { return a / b ; } } }
- ベストアンサー
- C・C++・C#
- C#2005で作成したEXEファイルを実行すると、フォームが開きます。
C#2005で作成したEXEファイルを実行すると、フォームが開きます。 これを、起動時にEXEファイルの後ろにパラメータを書き、例えば test.exe 100 200 とすると、 >test.exe 100, 200 300 のように、フォームを開かずにコンソール画面に標準出力するプログラムに改造したいのですが どのあたりの部分から修正すれば良いのでしょうか?
- ベストアンサー
- C・C++・C#
- C++Builderで実行ファイルが作成されない
C++Builder6で本に載っているHelloWorldサンプルをビルドしたところ、真っ白なタブが出るだけで何も出力されません。Bin下のbcc32でコマンドラインからコンパイルしてみると、objファイルとtdsファイルが出来ていますが、exeファイルは作成されていませんでした。 どうやれば簡単なコンソールアプリケーションをビルドできるのでしょうか?
- 締切済み
- C・C++・C#
- 実行結果をコマンドライン引数として渡す方法について
test1.cはコマンドラインから引数をとり処理するプログラム test2.cは「Hello!」と出力するプログラム。 これらのプログラムをコンパイルして、次のような引数の渡し方をしてHello!と表示したいのですがうまくいきません。 実際の結果 ----------------------------------------- $ ./test1.exe ./test2.exe ($はプロンプト) $ ./test2.exe $ ----------------------------------------- 期待する結果 ----------------------------------------- $ ./test1.exe ./test2.exe $ Hello! $ ----------------------------------------- ここでプログラムの仕様を示しておきます。 プログラム1(test1.c)の中身 -------------------------------------- #include <stdio.h> main(int argc, char *argv[]){ printf("%s\n", argv[1]); } -------------------------------------- プログラム2(test2.c)の中身 -------------------------------------- #include <stdio.h> main(){printf("Hello!\n");} -------------------------------------- よろしくお願いします!
- ベストアンサー
- C・C++・C#
- C#についての質問です
Microsoft Visual C# 2010 Express をつかって using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Console { class Program { static void Main(string[] args) { Console.WriteLine("皆様、はじめまして"); } } } と入力して.csで保存したのですが、コマンドプロンプトで 'csc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 とでてコンパイルできません。対応を教えてください。
- ベストアンサー
- Windows Vista
お礼
コマンドプロンプトへのパスの貼り付け方や、 開始オプションを利用した引数の受け渡しなど 丁寧に教えていただきありがとうございました。