首页 文章

无法从常规命令提示符编译.cs 文件,只能编译开发人员命令提示符?

提问于
浏览
-1

我有这个使用 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 下看到我有以下文件夹选项:

  • 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:\ directory ...\Program.cs

输出是:

Microsoft(R)Visual C#2008 编译器版本 3.5.30729.5420 for Microsfot(R).NET Framework 版本 3.5 版权所有(C)Microsoft COrporation.版权所有.

c: Usersdirectory ...Program.cs(5,24):错误 CS0234:命名空间“System.Threading”中不存在类型或命名空间名称“任务”(您是否缺少程序集引用?)

然后我尝试了 v4.0.30319:

C:\ Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\ directory ...\Program.cs

哪个输出:

Microsoft(R)Visual C#编译器版本 4.6.1055.0 for C#5 版权所有(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: WindowsMicrosoft.NETFrameworkv4.0.30319CSCD777AE6152014D6AAEC769E73B879B29.TMP' - 系统找不到指定的文件.

任何人都可以帮助我理解为什么这对开发人员命令提示符一切正常,但即使在完全量化“csc.exe”的路径时也无法获得常规命令提示符?

1 回答

  • 1

    我认为你在不了解正在发生的事情的情况下尝试了很多事情。

    我已经整理了一个简单的 C#程序,其中使用“VS2015 的开发人员命令提示符”我导航到我的目录并运行“csc Program.cs”来编译“Program.exe”文件。

    从此特定命令提示符运行 C#编译器时,csc.exe它位于路径中。要找出正在运行的确切命令,在 UNIX 上,我们使用名为which的命令。您可以尝试使用 gnu-utils 或 cygwin,或者只是手动迭代 PATH(任何情况)变量中指定的所有目录,以找出 csc.exe 所涉及的确切路径。这样您就会知道编译器的确切路径是什么。 更新:您可以在 Windows 上使用where命令查找命令的完整路径(感谢@ScottChamberlain)

    c:\ Users \目录...\Program.cs(5,24):错误 CS0234:命名空间“System.Threading”中不存在类型或命名空间名称“任务”(您是否缺少程序集引用?)

    在同一提示符下运行csc.exe /?并查看编译器支持的所有选项。其中一个是/r用于添加对 dll 的引用

    当我做:

    C:\ Windows\Microsoft.NET\Framework\v3.5\csc.exe C:\ directory ...\Program.cs

    CSCD777AE6152014D6AAEC769E73B879B29.TMP:错误 CS1567:生成 Win32 资源时出错:访问被拒绝。 wrning CS1610:无法删除用于默认 Win32 资源的临时文件'c: Windows_ Microsoft.NETFrameworkv4.0.30319CSCD777AE6152014D6AAEC769E73B879B29.TMP' - 系统找不到指定的文件。

    您可能希望位于文件Program.cs的目录中。这样,您就拥有了对文件夹的写权限,以生成必要的输出文件。您还可以使用/out选项指定输出文件名

    任何人都可以帮助我理解为什么这对开发人员命令提示符一切正常,但即使在完全量化“csc.exe”的路径时也无法获得常规命令提示符?

    很可能因为 PATH 环境变量不同。 Visual Studio 命令提示符,在启动命令提示符后设置一堆环境变量。您可以通过在两个终端上运行set命令并对其输出进行差异来查看两个提示之间的环境差异。不用说,某些环境变量总是不同的,这不是由于 VS.NET

    并且在评论中提到 as @KeithNicholas had,您可以简单地调用C:\Program Files (x86)\Microsoft Visual Studio *\Common7\Tools\VsDevCmd.bat来设置常规命令提示符,如 visual studio 命令提示符

相关问题