我正在使用team city调用一个nant脚本,目前这个nant脚本非常简单,只在解决方案中的单个项目上调用msbuild任务.
构建失败,看起来正在调用msbuild 3.5,但是它从.net 2.0文件夹中错误地调用了csc.exe.由于我们使用的是.net 3.5语言功能,因此编译失败.
查看csproj文件,ToolsVersion和TargetFrameworkVersion都设置为使用3.5.什么会导致msbuild选择错误版本的csc.exe?
我有一个使用app.config文件的控制台应用程序但是我无法弄清楚如何在命令行参数中包含它,以便当我使用fsc.exe以编程方式编译时,输出将创建Program.exe.config.现在我的解决方法是将app.config重命名为Program.exe.config并将其复制到与Program.exe相同的输出位置.我需要的是fsc.exe命令行参数来执行此操作,但是我怀疑csc.exe将具有与fsc.exe相同或非常接近的内容,因此如果你知道它在csc.exe中是什么我会试试看.
短发
我创建了一个程序,该程序在我的计算机上运行良好,通常也在其他计算机上运行.但是有一个人在运行时遇到问题我真的不明白为什么,Stacktrace是:
System.Runtime.InteropServices.ExternalException(0x80004005):Impossibile eseguire un programma.在esecuzione时代的Il comando"C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\c sc.exe"/ noconfig/fullpaths @"C:\ Users\Andry\AppData\Local\Temp\dot0eqxi.cmdli ne" .---> System.ComponentModel.Win32Exception(0x80004005):System.CodeDom.Compiler.Executor.ExecWaitWithCaptu中的未知错误(0x36b1)reUnimpersonated(SafeUserTokenHandle userToken,String cmd,String currentDir,TempFileCollection tempFiles,String&outputName,String&errorName,String trueCmdLine )在Microsoft.CSharp.CSharpCodeGenerator.Compile中的System.CodeDom.Compiler.Executor.ExecWaitWithCaptu re(SafeUserTokenHandle userToken,String cmd,String currentDir,TempFileCollection tempFiles,String&outputName,String&errorName,String trueCmdLine)中(Compi lerParameters选项,String compilerDirectory,字符串compilerExe,String arguments,String&outputFile,Int32&nativeReturnValue,String trueArgs)Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options,String [] fileNames)in Microsoft.CSharp.CSharpCodeGenerator.FromSourceBat ch(CompilerParameters options,String [] sources)在Microsoft.CSharp.CSharpCodeGenerator.System.CodeDo m.Compiler.ICodeCompiler.Co中 System.Xml.Serialization.TempAssembly.GenerateAsse mbly(XmlMapping [] xmlMappings中的System.Xml.Serialization.Compiler.Compile(程序集父级,字符串ns,XmlSerializerCompilerParameters xmlParameters,证据证据)中的mpileAssemblyFromSource Batch(CompilerParameters options,String [] sources) System.Xml.Serialization.TempAssembly..ctor中的Type [] types,String defaultNamespace,Evidence evidence,XmlSerializerCompilerParameters参数,Assembly assembly,Hashtable程序集)(XmlMap ping [] xmlMappings,Type [] types,String defaultNamespace,String location, SpellCaster3.Program.Main()中SpellCaster3.Program.LoadBaseRange()中的System.Xml.Serialization.XmlSerializer..ctor(Type type,String defaultNamespace)中的证据证据)
正如您所看到的,该问题与反序列化有关(该对象仅被反序列化)并且它发生在XmlSerializer构造函数中.
问题可能以某种方式与此问题相关:为什么我的Windows服务启动csc.exe实例?而为什么我的windows服务启动CSC.EXE的实例?
我很不能复制这个bug.这是涉及的代码:
Program.cs中
private static void LoadBaseRange()
{
string fileIconImageIndices = Application.StartupPath …Run Code Online (Sandbox Code Playgroud) 例如,当您在源代码中引入静态类时,csc编译器将其转换为密封的抽象类(如果我错了,请纠正我).
但接口怎么样; CLR知道接口是什么吗?或编译器将其转换为某种类型的声明?
我有一个奇怪的要求,我被要求在VBScript中编写某个验证脚本,因为它是纯文本.但我对c#感到更舒服.所以无论如何都要在任务调度程序中安排它,以便编译器编译程序(.cs文件中的源代码)并在运行中运行它.
我正在尝试构建一个将不同语言转换为C#代码的C#程序.我有程序正常工作,转换代码并将其写入.cs文件.我希望自动编译和运行此文件,但我无法弄清楚如何使用C#执行此操作.
我可以通过简单地运行我编写的批处理文件手动完成,并尝试使用System.Diagnostics.Process类从C#运行此批处理文件.当它运行时,它在批处理代码本身中给出了一个错误,说没有找到任何命令(通常的"不是可执行文件,批处理文件等").我无法弄清楚为什么它能正常运行,但不能从C#运行时.
这是批处理文件代码:C:\ Program_Files_(x86)\ Microsoft_Visual_Studio 10.0\VC\bin\amd64\vcvars64.bat csc%1.cs暂停
以及调用它的函数:
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "compiler\\compile.bat";
process.StartInfo.Arguments = " "+fileName;
process.Start();
process.WaitForExit();
process.StartInfo.FileName = fileName + ".exe";
process.Start();
process.WaitForExit();
Console.WriteLine("done");
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我总是使用Visual Studio来执行此操作,但即使MSDN也在编译和部署方案中反复引用命令行方法.
这家伙想做的事只有命令行,并称赞是铁杆,但我看不出做这样的地步.我错过了什么?
我在目录中有多个C#源文件(大约50个).我想要做的是分别编译所有这些,即使每个人都应该生成自己的可执行文件.(有些文件是一个或两个目录深.)
目前我在做的是
csc *.cs /recurse:*.cs
Run Code Online (Sandbox Code Playgroud)
这里的问题是CSC尝试将所有文件一起编译并找到该方法的多个实例Main.我知道这是正确的行为,但这不是我正在寻找的.
编写批处理脚本是我唯一的选择,还是可以使用某种单一命令通配符魔法来单独编译所有文件?
csc /target:library /out:MyMaths.dll ClassLibraryFunction.csproj
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码在VS.Cmd编译器中生成一个完整解决方案的DLL.但是,我收到编译错误,并且没有生成DLL.