我正在从 csc.exe 编译(好吧,CruiseControl 是...),我需要在 GAC 中引用一个 DLL。我没有作为简单文件的这个 DLL 的正确版本,但是 GAC 中有一个正确的版本。
但是,您不能使用 csc 引用 GAC 中的程序集——您必须拥有实际文件的路径。
我发现一些参考资料声称您可以对实际文件的路径进行逆向工程,但我无法让它们工作。我启动了 Fusion 日志记录,我可以看到运行时从哪里获取文件,但是在我的参考中使用指向该位置的文件路径不起作用。
那么,您如何向 csc 提供对仅存在于 GAC 中的程序集版本的引用?
我一直在研究一个项目,随着它的成长,我意识到两个不能连接在一起的部分是相互依赖的.
我们将这两个部分称为a.exe和b.dll.b.dll提供了一个允许a.exe检索数据的实现,但我希望它是自己的独立程序集,以便可以轻松更改它以使a.exe与不同的数据源通信.
但是,虽然需要a.exe来引用b.dll,但b.dll需要多个函数,这些函数是a.exe不可分割的一部分.
因为我一直在编译 - 测试 - 因为我一直在编写这个项目,a.exe和b.dll都存在,我可以针对a.exe编译b.dll而针对b.dll编译a.exe ,但我怎么能/可以从源头重建这两个?
谁能帮助我通过命令行编译一些c#文件?我有4个要编译的文件,Main,Form1(使用2.cs文件)和项目中使用的另一个类.
我想在命令行中编译这个项目,所以我可以添加/ t:库开关(就像在本教程中一样:http://dotnetslackers.com/articles/csharp/WritingAnActiveXControlInCSharp.aspx).
但是在使用"csc/t:library Program1.cs MainForm.cs MainForm.Designer.cs EigenObjectRecognizer.cs"后,我得到了以下缺少的程序集引用错误:
\Project\FaceRecProOVaspVer\FaceRecProOV\MainForm.cs(14,15): error CS0234: The type or namespace name 'Structure' does not exist
in the namespace 'Emgu.CV' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
我确实安装了EMGU二进制文件.我想我需要使用像EMGU.CV.dll这样的文件夹中的一些.dll?
使用Visual Studio 2010和.Net Framework 3.0编译工作流会导致此CSC错误:
“此程序集中已经使用了资源标识符xxxxxxxx”
其中xxxxxxxx是我的项目中的工作流类型。
我正在使用Workflow Foundation3。Tom,谢谢您的帮助
我刚下载并安装了Xamarin并选择了ASP.NET MVC模板.我没有触及任何东西.当我构建解决方案时,我收到以下错误:
无法添加包."无法运行指定的任务可执行文件"Csc.exe".访问被拒绝(MSB6003)".
这是在Package Console上显示的消息的末尾:
添加了文件'packages.config'.在UI线程中调度方法调用时抛出异常.
我正在运行Windows 8.1和Visual Studio Community 2015.
有任何想法吗?
当我使用aspnet_compiler.exe预编译我的网站时,我看到了一个cvtres.exe进程csc.exe.我假设这是.NET编译过程的一部分,并且在编译我的.NET程序集时也会显示.它是什么cvtres.exe以及它做了什么?
我正在编译一个基本的控制台应用程序:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:myapp.exe Program.cs
Run Code Online (Sandbox Code Playgroud)
首先打印:
Microsoft (R) Visual C# Compiler version 4.6.1038.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
Run Code Online (Sandbox Code Playgroud)
然后失败,因为我正在使用字符串插值$"{x}".错误是:
error CS1056: Unexpected character '$'
Run Code Online (Sandbox Code Playgroud)
我认为这是因为csc.exe不明白C# 6.如何识别此编译器C# 6?
标题问了一切,
动态编译的文件,如.cshtml文件,在.NET中使用csc.exe吗?
我看到了这个问题C#JIT编译和.NET
但是在Jit'ed之前它还没有完全进入动态文件的编译.
所以你有这个网站https://msdn.microsoft.com/en-us/library/ms366723.aspx.哪个说:
默认情况下,当用户首次从Web站点请求资源(如ASP.NET页面(.aspx文件))时,动态编译ASP.NET Web页面和代码文件.在第一次编译页面和代码文件之后,编译的资源被缓存,以便对同一页面的后续请求非常有效.
我是否理解csc.exe在被JIT进行之前首次请求新资源?
我想知道是否可以将 .NET 控制台应用程序入口点从以下示例中的方法更改Main为:Main2
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
}
//desired entry point
static void Main2(string[] args)
{
Console.WriteLine("Main2");
}
}
Run Code Online (Sandbox Code Playgroud)
我调查了这两个的 IL 代码。这是Main方法:
.method private hidebysig static void
Main(
string[] args
) cil managed
{
.entrypoint
.maxstack 8
// other instructions
} // end of method Program::Main
Run Code Online (Sandbox Code Playgroud)
以及Main2方法:
.method private hidebysig static void
Main2(
string[] args
) cil managed
{
.maxstack 8
//other instructions
} // end of method …Run Code Online (Sandbox Code Playgroud) 我发现csc.exeRoslyn 附带的二进制文件可以采用-langversion:<string>命令行参数来设置我想要编译的 C# 版本。但是如何选择我希望编译器使用的 .NET 版本?
编译过程适用于我使用一些 .NET SQL Server 功能的简单测试程序,所以我知道编译器以某种方式在我的计算机上使用了 .NET 版本。我的C:\Windows\Microsoft.NET\Framework目录中有多个 .NET 版本,我假设编译器正在使用其中之一。我想明确设置编译器在编译我的程序时使用哪个版本的 .NET。
注意:如果您能详细说明编译器如何首先选择一个版本,那也将不胜感激。