问题描述
我已经编写了一个Asp.Net Webforms应用程序(aspx)。 该应用程序以DotNet 4.72为目标。 在该应用程序中,我使用的是Tuples,因此为了使语法正常工作,我安装了块包Microsoft.CodeDom.Providers.DotNetCompilerPlatform版本2.0.0
无效的代码如下:
public (Person,string,Int) Foo()
{
return (new Person(),"Hello",42);
}
有人告诉我要用程序集引用替换nugget程序包,但我找不到使它工作的方法。 我所做的步骤是:
- 保存文件:
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml
- 使用NuGet包管理器删除了金块包。
结果:我在语法上出现构建错误:
error CS1031: Type expected
error CS1519: Invalid token '(' in class,struct,or interface member declaration
error CS1519: Invalid token ',' in class,or interface member declaration
error CS1519: Invalid token ')' in class,or interface member declaration
error CS1520: Method must have a return type
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" warningLevel="4"
compilerOptions="/langversion:default /Nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider,PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /Nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
Could not find a part of the path 'C:\Users\myUserName\source\repos\WebSite1\WebSite1\bin\roslyn\csc.exe'.
我可以在不使用NuGet软件包的情况下使用此软件包吗? 如果是这样,我该怎么办?
谢谢。
解决方法
尝试将dll文件复制到bin目录或在项目中创建一个lib文件夹,然后从那里引用它。还要确保右键单击dll文件->“属性->复制到输出目录->始终复制”