标签: csc

Visual Studio 2012命令行编译器

我知道这似乎是一个重复的问题,但我已经通过所有现有的答案无济于事.

我一直在尝试让命令提示符确认C#的命令行编译器,因为它对我正在使用的编译器生成器来说是必不可少的.我正在全新安装Windows 7 SP1 64位,使用Visual Studio 2012对dreamspark的称赞.

我已经尝试将"Microsoft.NET\Framework\v4.0.30319"和"Microsoft.NET\Framework64\v4.0.30319"添加到路径环境变量中,尝试了vsvars批处理文件,但仍然没有运气.命令提示符只是声明"csc不被识别为内部或外部命令".

任何帮助,将不胜感激!

c# command-line csc

5
推荐指数
1
解决办法
6531
查看次数

在使用aspnet_compiler编译应用程序后,IIS仍然运行csc.exe

我一直在尝试使用aspnet_compiler来预编译我的asp.net站点,以避免或最小化在应用程序池回收后运行csc.exe.但是,在运行编译器回收后,应用程序池仍然会导致一大堆csc.exe进程启动,服务器将停止运行直到编译完成.

我正在运行以编译站点的命令是:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -p"E:\ webRoot\application"-v // localhost/application E:\ Webroot公司\应用

我已经在互联网上搜索了这个答案,但我还没有成功.如果有人有任何建议,他们将不胜感激,因为这会导致服务器上运行的所有站点出现严重的性能问题,应用程序池回收发生.

非常感谢!

asp.net iis aspnet-compiler csc

5
推荐指数
0
解决办法
983
查看次数

用于指定.net框架版本的C#编译器选项是什么

在这两篇msdn文章中,我已经完全看过按字母顺序列出的C#编译器选项按类别列出的C#编译器选项(用于指定用于在命令行构建中使用的目标框架版本的编译器选项)。我知道我们可以在app.config中使用supportedRuntimeelement 指定框架版本。

我们可以使用这个元素(configuration> startup> supportedRuntime)在web.config中也(在asp.net应用程序的情况下)?

我不需要仅使用命令行开关就可以做到这一点。我只是问这个问题是因为好奇。

.net c# asp.net csc

5
推荐指数
1
解决办法
504
查看次数

C#编译为MSIL代码

Microsoft C#编译器(CSC.exe)是否有输出中间语言文件的选项?有点像GCC中的-S开关吗?

c# cil csc intermediate-language

4
推荐指数
2
解决办法
1581
查看次数

如何使用csc(C#编译器)或dmcs(单声道C#编译器)生成IL源代码?

gcc有一个-s选项来生成汇编源代码.csc(MS C#编译器)或dmcs(单声道C#编译器)是否具有等价性?我的意思是那些编译器提供了生成可以读取而不是执行二进制文件的IL源代码的选项吗?

c# mono il csc

4
推荐指数
1
解决办法
1451
查看次数

禁用循环返回值的C#优化

我有一个返回的方法IEnumerable<T>.我把这个方法称为两个地方,在其中一个地方我没有对结果做任何事情.

看起来C#编译器删除了对该方法的调用,即使我用它来装饰它[MethodImpl(MethodImplOptions.NoOptimization)].代码甚至没有进入调用方法..ToList()但是,如果我在最后添加,它将被执行.

有没有办法通过编译器/运行时禁用此优化?查看ILDASM输出,看起来它更像是运行时优化,因为调用就在那里.

.net c# jit csc

4
推荐指数
1
解决办法
320
查看次数

使用Roslyn(csc.exe)定位.NET 3.5时手动编译C#

我正在使用csc/csc2.exe手动编译应用程序.我需要引用.NET 3.5 dll,但似乎编译器自动添加了.NET 4.0 dll(导致冲突).

我手动引用了所需的mscorlib版本和其他系统dll.从Visual Studio中编译成功,但是从命令提示符手动编译同一响应文件失败.

/nostdlib+
/platform:AnyCPU
/errorendlocation
/highentropyva-
/reference:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
/reference:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll"
/debug+
/debug:full
/out:obj\Debug\Target.exe
/ruleset:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset"
/target:exe
/utf8output
Program.cs Properties\AssemblyInfo.cs
Run Code Online (Sandbox Code Playgroud)

我为每个引用的程序集收到以下错误:

error CS1703: Multiple assemblies with equivalent identity have been imported: 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.dll' and 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll'. Remove one of the duplicate references.
Run Code Online (Sandbox Code Playgroud)

是什么导致编译器包含.NET 4.0 dll,我该怎么做才能阻止它包含它们?

更新: 我不能使用MSBUILD,因为我已经有一个来自应用程序的响应文件(不是项目文件).该应用程序使用了过时的编译器版本,我正在尝试用支持C#6的新版本替换它们的编译器.我已经使用Mono MCS编译器成功完成了这项任务,但无法与Roslyn一起工作.我不能使用MCS编译器,因为它还不支持所有C#6功能.

使用MSBUILD的唯一方法是将响应文件解析回C#项目文件.这对我来说似乎过度工程化了.

.net c# csc

4
推荐指数
1
解决办法
1793
查看次数

当我上次将输出编码保留为UTF8时,为什么csc.exe会崩溃?

我正在遇到或遇到过一件非常奇怪的事情.

我想知道其他人是否有,以及为什么会这样.

使用此行运行单行程序后,System.Console.WriteLine(System.Console.OutputEncoding.EncodingName); 我看到编码是Western European (DOS)

精细

下面是一些代码页的列表 1200 Unicode ,并65001 utf-8Windows-1252 Western European (Windows)850 Western European DOShttps://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx

假设我编写了一个C sharp程序来将编码更改为utf-8

class sdf
{
  static void Main(string[] args)
{
System.Console.WriteLine(System.Console.OutputEncoding.EncodingName);
  System.Console.OutputEncoding=System.Text.Encoding.GetEncoding(65001);
System.Console.WriteLine(System.Console.OutputEncoding.EncodingName);
}
}
Run Code Online (Sandbox Code Playgroud)

它工作,它打印

Western European (DOS)
Unicode (UTF-8)
Run Code Online (Sandbox Code Playgroud)

现在当我再次运行csc时,csc崩溃了.

在此输入图像描述

我检查了我的内存14小时,8次通过,记忆了.我跑了chkdsk我的硬盘,一切都很好.这绝对不是那些,这是一个编码问题.我知道,因为如果我打开一个新的cmd提示符,然后运行csc,它不会崩溃.

所以运行那个急剧的程序,改变shell,这样下一次运行csc就会以很大的方式崩溃csc.

如果我编译下面的代码,然后运行它,然后运行csc,然后运行csc,或csc whatever.cs,我得到csc崩溃.

关闭cmd提示符,打开一个新提示符.

这一次,尝试评论并取消注释程序的第二行

我发现,如果第二行(将代码页更改为850(DOS西欧)的行,那么它将在下次运行csc时不会崩溃).

如果我注释掉第二行,那么程序退出时将代码页/编码更改为UTF-8然后下次csc运行时,csc崩溃.

//取消注释最后一行,然后//运行但下次使csc崩溃.

class asdf
{
  static void Main()
  {

     System.Console.OutputEncoding = System.Text.Encoding.UTF8; //output and to utf8
     System.Console.OutputEncoding=System.Text.Encoding.GetEncoding(850); 
  }
}
Run Code Online (Sandbox Code Playgroud)

我不是唯一一个碰到这样的人

虽然没有找到解释,但https://social.msdn.microsoft.com/Forums/vstudio/en-US/0e5f477e-0c32-4e88-acf7-d53d43d5b566/c-command-line-compiler-cscexe-immediately-crashes-当-在代码运行页-65001-UTF8?论坛= csharpgeneral

我可以通过确保最后一行将代码页设置为850来处理它.虽然我会解释这是一个不充分的解决方案.. …

c# windows command-line csc

4
推荐指数
1
解决办法
1044
查看次数

指定的任务可执行文件位置...... csc.exe无效错误

我有一个关于TFS的项目,该项目正在除我之外的其他所有人的机器上工作。在构建时,出现了可以在图像中看到的错误。“指定的任务可执行文件位置csc.exe无效。” 当前正在尝试修复VS 2017。

tfs csc visual-studio

4
推荐指数
2
解决办法
7376
查看次数

C#中的#line processor指令增加了行号

#lineC#中的处理器指令将每行的行号增加到文件末尾或直到达到另一个#line处理器指令; 自动增量行号.

那太有趣了!例如:

try
{
#line 110
    act();
    throw new InvalidOperationException();
}
catch (Exception x) { Console.WriteLine(x); }
Run Code Online (Sandbox Code Playgroud)

显示在第111行发生异常(不是110!).

问题:假设#line显示的行号与实际行号不同.例如#line 110,实际上是放在实际的第13行.现在是否有办法取消功能#line并显示实际第23行(而不是120)发生了异常?

注意:我只是想确定我没有遗漏任何东西(或做任何愚蠢的事情).

我在.NET 4.5项目上使用Visual Studio 2012.

c# csc visual-studio visual-studio-2012

3
推荐指数
1
解决办法
193
查看次数