我使用Visual Studio开发了这个相当简单的控制台应用程序。有了它,我已经整理了一个简单的C#程序,其中使用"开发人员命令提示符VS2015"我导航到我的目录并运行" csc Program.cs"编译" Program.exe"文件。从那里我可以输入" Program ***"并传递一个文件名,例如" Program file.asm"。
一切都很完美。但是,我想从正常的命令提示符运行它。当我在VS2015的Developer Command Prompt中编译时,输出以下两行:
Microsoft (R) Visual C# Compiler version 1.3.1.60616
Copyright (C) Microsoft Corporation. All rights reserved.
当我导航时,我可以看到在C:\ Windows \ Microsoft.NET \ Framework下我有以下文件夹选项:
当我这样做时:
C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe C:\ directory ... \ Program.cs
输出是:
Microsoft(R)Visual C#2008编译器版本3.5.30729.5420(适用于Microsfot(R).NET Framework版本3.5 版权所有(C)Microsoft COrporation。保留所有权利。
c:\ Users \ directory ... \ Program.cs(5,24):错误CS0234:类型或命名空间名称'任务'命名空间中不存在System.Threading' (你错过了一个装配参考吗?)
然后我尝试使用v4.0.30319:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ csc.exe C:\ directory ... \ Program.cs
哪个输出:
用于C#5的Microsoft(R)Visual C#编译器版本4.6.1055.0 版权所有(C)Microsoft COrporation。版权所有。 此编译器作为Microsoft(R).NET Framework的一部分提供,但仅支持C#5以外的语言版本,而C#5不再是最新版本。对于支持较新版本的C#编程语言的编译器,请参阅http://go.microsoft.com/fwlink/?LinkID=533240 CSCD777AE6152014D6AAEC769E73B879B29.TMP:错误CS1567:生成Win32资源时出错:访问被拒绝。 wrning CS1610:无法删除临时文件&c; \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ CSCD777AE6152014D6AAEC769E73B879B29.TMP'用于默认Win32资源 - 系统找不到指定的文件。
任何人都可以帮助我理解为什么这对开发人员命令提示符一切正常,但即使在完全量化" csc.exe"
的路径时也无法获得常规命令提示符答案 0 :(得分:1)
我认为你在不了解正在发生的事情的情况下尝试了很多事情。
我已经整理了一个简单的C#程序,其中使用“VS2015的开发人员命令提示符”我导航到我的目录并运行“csc Program.cs”来编译“Program.exe”文件。
当您从此特定命令提示符运行C#编译器时,which
它位于路径中。要找出正在运行的确切命令,在UNIX上,我们使用名为where
的命令。您可以尝试gnu-utils或cygwin,或者只是手动迭代PATH(任何情况)变量中指定的所有目录,以找出有问题的csc.exe所在的确切路径。这样您就会知道编译器的确切路径是什么。
更新:您可以在Windows上使用csc.exe /?
命令查找命令的完整路径(感谢@ScottChamberlain)
c:\ Users \ directory ... \ Program.cs(5,24):error CS0234:名称空间'System.Threading'中不存在类型或命名空间名称'Tasks'(你是否缺少一个程序集)引用?)
在同一提示符下运行/r
并查看编译器支持的所有选项。其中一个是Program.cs
,用于添加对dll的引用
当我这样做时:
C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe C:\ directory ... \ Program.cs
CSCD777AE6152014D6AAEC769E73B879B29.TMP:错误CS1567:生成Win32资源时出错:访问被拒绝。 wrning CS1610:无法删除用于默认Win32资源的临时文件'c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ CSCD777AE6152014D6AAEC769E73B879B29.TMP' - 系统无法找到指定的文件。
您可能希望进入文件/out
的目录。这样,您就拥有了对文件夹的写权限,以生成必要的输出文件。您还可以使用set
选项指定输出文件名
任何人都可以帮助我理解为什么这对开发人员命令提示符一切正常,但即使在完全量化“csc.exe”的路径时也无法获得常规命令提示符?
最有可能因为PATH环境变量不同。 Visual Studio命令提示符,在启动命令提示符后设置一堆环境变量。您可以通过在两个终端上运行C:\Program Files (x86)\Microsoft Visual Studio *\Common7\Tools\VsDevCmd.bat
命令并对其输出进行差异来查看两个提示之间的环境差异。不用说,某些环境变量总是不同的,而不是VS.NET
正如@KeithNicholas在评论中提到的那样,您只需调用{{1}}来设置常规命令提示符,如visual studio命令提示符