Visual Studio在项目属性 - > C/C++ - >命令行和链接器 - >命令行下显示编译器和链接C++项目的确切命令行,但是,我无法找到C#项目的类似属性页.
有没有人知道找出用于编译C#项目的csc.exe命令行参数的最佳方法是什么
我的项目在构建时出现错误 csc.exe 以代码 -2146232797 Visual Studio 2017(Professional) 在其他团队的计算机项目构建和运行良好退出,所以我不想更新 nuget 编译器,那里有任何永久解决方案吗?
我刚刚升级到VS2019,无法构建现有的解决方案。编译器在解决方案中的某些项目上生成以下错误:
“ Csc”任务不支持“ DisableSdkPath”参数。验证参数是否在任务上存在,并且它是可设置的公共实例属性。
整个解决方案在Visual Studio中构建得很好,但是当我运行Nant脚本来编译网站时,我在这一行上遇到了几个错误:
string[] qs = (Request.QueryString["e"] ?? String.Empty)
.Split(new[] { '?' }, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
首先说明预期类型,然后是语法错误(预期值),); 我曾经在项目中使用过这样的行,但似乎并没有抱怨这些行.
我很确定错误来自于在条件语句上调用Split,但我不确定原因.
我可以用以下命令构建我的项目......
csc /reference:lib\Newtonsoft.Json.dll SomeSourceFile.cs
Run Code Online (Sandbox Code Playgroud)
...但是当我使用这个命令时......
msbuild MyProject.csproj
Run Code Online (Sandbox Code Playgroud)
...使用以下.csproj文件,我的.dll参考不包括在内.有什么想法吗?
<PropertyGroup>
<AssemblyName>MyAssemblyName</AssemblyName>
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="SomeSourceFile.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>lib\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
</Target>
Run Code Online (Sandbox Code Playgroud)
在Visual C++ 2010中,我可以看到传递给cl.exe的参数:

这是非常有用的,因为有时你会忘记检查这个或那个选项,在这里和那里添加一些目录等,并立即看到所有命令使这很容易发现.
我想知道Visual C#2010是否有类似的东西.我无法在任何地方看到"命令行"选项卡.显然早期版本在Output> Build选项卡中显示"Task:csc"行,但我在Visual C#2010 SP1生成的输出中找不到类似的内容.
是否有可能获得我正在寻找的东西?
NB我知道我可以从MSBuild获取参数,但遗憾的是,由于依赖解析失败,MSBuild无法构建我的一些解决方案.我正在寻找一个纯Visual Studio IDE解决方案.
我知道Visual Studio内部使用一个名为msbuild的工具来编译C#代码.msbuild是否在内部使用csc.exe(随.net框架提供)来编译代码?或者Visual Studio是否有自己的编译器?
更新(与原始问题略有不同):Powershell使用.net类型.那么powershell也会针对csc.exe吗?如果是,那是不是意味着PowerShell不是纯脚本?
我在c#中有这个程序:
using System;
class Program
{
public static void Main()
{
int i = 4;
double d = 12.34;
double PI = Math.PI;
string name = "Ehsan";
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时,以下是编译器为Main生成的IL:
.method public hidebysig static void Main() cil managed
{
.entrypoint
// Code size 30 (0x1e)
.maxstack 1
.locals init (int32 V_0,
float64 V_1,
float64 V_2,
string V_3)
IL_0000: nop
IL_0001: ldc.i4.4
IL_0002: stloc.0
IL_0003: ldc.r8 12.34
IL_000c: stloc.1
IL_000d: ldc.r8 3.1415926535897931
IL_0016: stloc.2
IL_0017: ldstr "Ehsan"
IL_001c: stloc.3
IL_001d: ret …Run Code Online (Sandbox Code Playgroud) 我使用的是Visual Studio2013。昨天,我安装了VS2015(企业更新3)。我的解决方案的构建过程在其中一个项目的VS2015中崩溃。VS2017 RC发生相同的异常。该解决方案已在VS2013中成功构建。
该解决方案的目标是.Net4.5。当我迁移到.Net4.6.2时,它不能解决此问题。
我相信问题在于VS2015 +中包含的编译器
输出:
进程由于StackOverflowException而终止。
C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.CSharp.Core.targets(67,5):错误MSB6006:“ csc.exe”退出,代码为-1073741571。
Msbuild命令:
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe \
/noconfig \
/nowarn:1591,1701,1702,2008 \
/nostdlib+ \
/errorreport:prompt \
/warn:4 \
/define:TRACE;DEBUG;DOMAIN_IMPL \
/errorendlocation \
/preferreduilang:en-US \
/highentropyva+ \
/reference:[...] \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.ComponentModel.Composition.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.ComponentModel.DataAnnotations.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Configuration.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Core.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Data.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.dll" \
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Net.Http.dll" \
/reference:"C:\Program …Run Code Online (Sandbox Code Playgroud) 我可以通过VS for Mac开发基于.NET Core的C#应用程序,现在我已经创建了一个“编译器”,可以为我创建的语言生成C#。我至少要运行输出(一个名为Program.cs的文件),并希望将其编译为macOS上的可执行文件。
在Windows上,可以使用以下方法完成此操作:
csc /optimize /t:exe /out:Program.exe Program.cs
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这个确切的命令在macOS上也同样起作用,并生成Windows可执行文件。我想要的是Mac可执行文件的等效功能。但是,csc文档指出,唯一的编译器目标是“库”,“模块”和Windows应用程序。
为了澄清起见,我不想在运行时运行代码,而是从运行时生成的代码(作为字符串)构建可执行文件。