我正在尝试csc.exe
从命令行使用来编译 .NET 1.1 .csproj 项目。它失败并出现以下错误:
MyProject.csproj(24,2046):错误 CS1034:超出编译器限制:行不能超过 2046 个字符
.csproj 文件的第 24 行是节点的PostBuildEvent
属性。<Settings>
我确实有一个超过 2046 个字符的冗长的构建后事件。
这个项目是一个遗留应用程序,已经成功编译了 8 年以上,直到 2-6 周前都没有出现任何问题。(最后一次为我成功编译是在 6 周前,然后我直到几周前才再次尝试,从那以后一直失败。)我尝试删除当时已安装的所有服务包框架,它并没有改变结果。我不知道从这里去哪里。
编辑:
使用下面 Eric J 的建议,我通过将一些命令移动到外部 .bat 文件然后像这样调用它们来缩短构建后事件。现在,当我尝试运行 csc.exe 时,我收到以下错误:
MyProject.csproj(491,35):错误 CS1010:常量换行
MyProject.csproj(1,1):错误 CS0116:命名空间不直接包含字段或方法等成员
项目文件的第 491 行是<Folder RelPath = "Xml\" />
,当然第 1 行是<VisualStudioProject>
.
这就像它试图编译我的 .csproj 文件,就好像它是一个 .cs 文件一样。为什么?我这样调用 csc.exe :
csc.exe /t:library /out:transformed\Services\bin\Services.dll *.cs Cache\*.cs Settings\*.cs transformed\Services\*.cs /r:MyReference.dll /r:MySecondReference.dll /nologo /debug /define:DEBUG
是否因为某种原因*.cs
突然包括在内?MyProject.csproj
如果是这样,我将如何解决这个问题?
编辑2:
我想出了一个解决方法。从上面的命令行语句可以看出,我正在编译*.cs
,它与.csproj
文件在同一目录中。我有一种预感,由于某种原因,它还试图编译项目文件,就好像它是 C# 代码一样。我将根目录中的所有 C# 源文件移动到一个名为 的文件夹Services
中,然后将我的命令行语句更改为 compile Services\*.cs
。现在一切正常。
我仍然不知道是什么导致这种行为最近发生了变化,所以如果有人有一些见识,我将不胜感激。