编程语言
首页 > 编程语言> > 使用Roslyn(csc.exe)定位.NET 3.5时手动编译C#

使用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

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

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.

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

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

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

解决方法:

将/ noconfig选项添加到命令行,它应该按预期工作.

The /noconfig option tells the compiler not to compile with the
csc.rsp file, which is located in and loaded from the same directory
as the csc.exe file.

The csc.rsp file references all the assemblies shipped with the .NET
Framework. The actual references that the Visual Studio .NET
development environment includes depend on the project type.

Source

csc.rps的常用内容(v4.0.30319):

/r:Accessibility.dll
/r:Microsoft.CSharp.dll
/r:System.Configuration.dll
/r:System.Configuration.Install.dll
/r:System.Core.dll
/r:System.Data.dll
/r:System.Data.DataSetExtensions.dll
/r:System.Data.Linq.dll
/r:System.Data.OracleClient.dll
/r:System.Deployment.dll
/r:System.Design.dll
/r:System.DirectoryServices.dll
/r:System.dll
/r:System.Drawing.Design.dll
/r:System.Drawing.dll
/r:System.EnterpriseServices.dll
/r:System.Management.dll
/r:System.Messaging.dll
/r:System.Runtime.Remoting.dll
/r:System.Runtime.Serialization.dll
/r:System.Runtime.Serialization.Formatters.Soap.dll
/r:System.Security.dll
/r:System.ServiceModel.dll
/r:System.ServiceModel.Web.dll
/r:System.ServiceProcess.dll
/r:System.Transactions.dll
/r:System.Web.dll
/r:System.Web.Extensions.Design.dll
/r:System.Web.Extensions.dll
/r:System.Web.Mobile.dll
/r:System.Web.RegularExpressions.dll
/r:System.Web.Services.dll
/r:System.Windows.Forms.Dll
/r:System.Workflow.Activities.dll
/r:System.Workflow.ComponentModel.dll
/r:System.Workflow.Runtime.dll
/r:System.Xml.dll
/r:System.Xml.Linq.dll

标签:c,net,csc
来源: https://codeday.me/bug/20190612/1223147.html