【问题标题】:batch - error by compiling a C# project批处理 - 编译 C# 项目时出错
【发布时间】:2016-01-07 10:42:05
【问题描述】:

我正在尝试从 Windows 命令行编译项目“MyProjectName”。

这是代码:

PUSHD E:\
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library Projects\MyProjectName /define:DEBUG /out:\Projects\MyProjectName\debug\MyProjectName.dll *.cs

我得到错误:

source file "Projects\MyProjectName" could not be found
source file "*.cs" could not be found

【问题讨论】:

  • 我不认为 csc 编译器可以编译所有带有通配符的 .cs。而是您需要编译描述文件的 .proj 文件。
  • 我猜你只是想要Projects\MyProjectName\*.cs。但是为什么不将您的项目文件提供给 msbuild?
  • @npocmaka:不,csc 绝对可以处理通配符。
  • @npocmaka:如果你在 reasonable shell 中运行它,shell 会用一系列文件替换通配符。通配符处理由 shell 完成。
  • 考虑改用开发者命令提示符。这将准备好环境,因此您可以从项目目录中调用 csc。

标签: c# batch-file


【解决方案1】:

当你当前的路径是

C:\Windows\Microsoft.NET\Framework\v4.0.30319\

然后是相对路径规范

Projects\MyProjectName

应该是当前路径的子目录,但可能不是。为项目目录指定一个绝对(根)路径。

PUSHD 命令似乎仅对驱动器号无效 - 否则,csc 会抱怨“源文件 E:\Projects... 未找到”

使用重新定位的 /target 开关和组合源参数的工作解决方案:

csc.exe /out:\Projects\MyProjectName\debug\MyProjectName.dll /target:library Projects\MyProjectName\*.cs /define:DEBUG

【讨论】:

  • 热门解决?写 E:\Projects\MyProjectName 没有帮助。
  • 我在 4.0.30319 版本中得到了这个。请参阅更新答案的最后一行。更改是:1)将 /target 开关放在源路径之前(编译器抱怨,/target 和 /out 必须在源之前) 2)将源路径和通配符组合成一个参数 3)csc 没有创建调试子目录。它失败了,直到我手动创建它。
  • 谢谢。编译运行。问题是它没有找到没有 .cs 后缀的资源。我试图将目标更改为 /target:library Projects\MyProjectName*.* ,但随后出现其他错误。也许是因为,这些资源的一部分在经过测试的文件夹中。
  • 使用 /resource 参数嵌入 .NET 资源文件。有关详细语法,请参见此处:msdn
  • 使用 /recurse 开关在嵌套文件夹中搜索输入文件。
猜你喜欢
  • 1970-01-01
  • 2017-01-07
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多