2016-10-02 9 views
-1

私はVisual Studioを使用して開発したこのシンプルなコンソールアプリケーションを持っています。それで、私は単純なC#プログラムをまとめました。「開発者コマンドプロンプトVS2015」を使用して私のディレクトリに移動し、 "Program.exe"ファイルをコンパイルするために "csc Program.cs"を実行します。そこから "Program ***"とタイプし、 "Program file.asm"のようなファイル名を渡すことができます。通常のコマンドプロンプトから.csファイルをコンパイルできません。開発者コマンドプロンプトのみ?

すべてが完全に機能しています。しかし、私はこれを通常のコマンドプロンプトから実行したい。私はVS2015のための開発者コマンドプロンプト内でコンパイルすると、以下の2行が出力されます。

Microsoft (R) Visual C# Compiler version 1.3.1.60616 
Copyright (C) Microsoft Corporation. All rights reserved. 

そして私は、私はCの下でそれを見ることができます移動するとき:

:\ WINDOWS \ Microsoft.NET \ Frameworkの私はのためのフォルダオプションを持っています
  • v1.0.3705と
  • V1.1.4322
  • v2.0.50727の
  • v3.0の
  • V3.5
  • v4.0.30319

私は:

C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ V3.5の\のcsc.exeのC:\ディレクトリ... \ Program.csの

出力は次のとおりです。

のMicrosoft(R)のVisual C#2008コンパイラバージョン3.5.30729.5420 Microsfot(R).NET Frameworkのバージョン3.5 著作権(C)Microsoft Corporationのために。全著作権所有。 CS0234:型または名前空間の名前 'Tasks'が 'System.Threading'という名前空間に存在しません(あなたですか?アセンブリ参照が不足して)私はその後、v4.0.30319を試してみました

:?

C:\ WINDOWS \ Microsoft.NET Frameworkの\ \ v4.0.30319 csc.exeのC \:\ディレクトリ... \プログラム.cs

出力:

C#5用Microsoft(R)Visual C#コンパイラバージョン4.6.1055.0 著作権(C)Microsoft COrporation。全著作権所有。 このコンパイラはMicrosoft(R).NET Frameworkの一部として提供されていますが、C#5までの言語バージョンのみをサポートしています。これはもはや最新バージョンではなくなりました。新しいバージョンのC#プログラミング言語をサポートするコンパイラについては、http://go.microsoft.com/fwlink/?LinkID=533240 CSCD777AE6152014D6AAEC769E73B879B29.TMP:エラーCS1567:Win32リソースの生成中にエラーが発生しました:アクセスが拒否されました。 wrning CS1610:デフォルトのWin32リソースに使用される一時ファイル 'c:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥CSCD777AE6152014D6AAEC769E73B879B29.TMP'を削除できません - 指定されたファイルが見つかりません。

「csc.exe」のパスを完全に定量化しても、これが開発者コマンドプロンプトで正常に動作するのはなぜですか?

+0

のような定期的なコマンド・プロンプトを設定するにはC:\Program Files (x86)\Microsoft Visual Studio *\Common7\Tools\VsDevCmd.batを呼び出すことができますプロンプトを表示すると、それはたくさんの環境変数とパスを設定することがわかります –

+0

'set'について詳しく説明できますか?編集:Nvm、私は入力し、今すぐ参照してください。ここでは、私のための簡単な違いは、cmdのプロンプトverusの開発者のもので動作するようにファイルを取得するには? –

+0

コマンドプロンプトでsetと入力し、Enterキーを押すと、環境内の設定内容が表示されます。それをファイルにキャプチャしたい場合はa.txtを設定してください –

答えて

0

あなたは何が起こっているのか理解せずにかなりのことをしようとしていると思います。

「開発者コマンドプロンプトVS2015」を使用して私のディレクトリに移動し、「Program.exe」ファイルをコンパイルするために「csc Program.cs」を実行する単純なC#プログラムをまとめました。

この特定のコマンドプロンプトからC#コンパイラを実行すると、csc.exeがパスに含まれます。正確なコマンドが実行されているか調べるために、UNIXではwhichというコマンドを使用します。 gnu-utilsやcygwinを試してみるか、PATH(任意の場合)変数に指定されているすべてのディレクトリを手動で繰り返して、問題のcsc.exeがどの正確なパスに存在するかを調べることができます。この方法でコンパイラの正確なパスを知ることができます。 を更新:\ Users \ユーザーディレクトリ... \ Program.csを(5,24:あなたは、コマンドのフルパスを見つけるために、Windows上で

Cを(@ScottChamberlainのおかげで)whereコマンドを使用することができます):エラーCS0234:?同じプロンプトで、型または名前空間名「タスク」(あなたがアセンブリ参照が不足している名前空間「System.Threading」には存在しません)

実行csc.exe /?とすべてのオプションを見ますコンパイラがサポートしています。

C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ V3.5の\のcsc.exeのC:そのうちの一つは、私が行うとDLLに

を参照を追加するための/rです\ディレクトリを.. 。\ Program.cs

CSCD777AE6152014D6AAEC769E73B879B29.TMP:エラーCS1567:Win32リソースの生成中にエラーが発生しました:アクセスが拒否されました。 CS1610:一時ファイル 'c:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥CSCD777AE6152014D6AAEC769E73B879B29.TMP'をデフォルトWin32リソース用に削除できません - 指定されたファイルが見つかりません。

おそらくファイルProgram.csのディレクトリに存在したいと考えています。この方法で、必要な出力ファイルを生成するためのフォルダへの書き込み権限があります。また

は誰もが、これは開発者用コマンドプロンプトのためのすべての作業罰金があるが、通常のコマンドプロンプトで失敗することは、完全に「CSCのパスを定量化する場合でも、なぜ私が理解するのに役立ちます出力ファイル名を指定し/outオプションを使用することができます。 EXE"?

おそらくPATH環境変数が異なるためです。 Visual Studioのコマンドプロンプトでは、コマンドプロンプトを起動した後に一連の環境変数が設定されます。 2つのプロンプトの間の環境の違いは、両方の端末でsetコマンドを実行し、出力にdiffを実行することで確認できます。言うまでもなく、特定の環境変数は常に異なりますが、これはVSに起因するものではありません。NET

そして@KeithNicholasはコメントで述べたように、あなたは単にあなたが通常のコマンドプロンプトとdevコマンドに `set`を行う場合のVisual Studioコマンドプロンプト

+0

windowsの 'csc.exe'はあなたに実行されたexeのパスを与えます。 –

+0

@ScottChamberlainありがとうございます。それを知らなかった。私は年齢のためにUNIX上で 'where'を使っていましたが、ウィンドウ上で働いていることを知らなかった – Vikhram

+0

バッチファイル内の' echo%〜$ PATH:1'はパスを検索し、正式名称、つまりnotepad.exeを含めます。 'batfile notepad.exe'は' C:\ Windows \ System32 \ notepad.exe'を返します。 –

関連する問題