【发布时间】:2020-02-22 13:43:02
【问题描述】:
我正在处理一个包含多个可执行文件的大型项目。我想通过一次构建所有这些来自动化部署过程。这就是我使用msbuild 命令行实用程序的原因。
当我在 Visual Studio 中构建我的一个项目时,它会正常构建。当我尝试使用 msbuild cmd 执行相同操作时,它会失败并出现错误
CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [pathToLibrary.csproj]
这是cmd代码:
msbuild MainProject.csproj -property:Configuration=Release -property:Platform="AnyCPU" -property:OutputType="WinExe" -target:"Rebuild"
pathToLibrary.csproj 确实是一个库,所以我不知道为什么msbuild 试图找到一个主要方法。空无一人。这是一个图书馆。
我在这里错过了什么?
【问题讨论】:
-
“没有。它是一个图书馆。” - 那么输出类型不应该设置为WinExe。这就是问题所在,我强烈怀疑。为什么要在命令行上指定它?
-
MainProject.csproj 包含对 pathToLibrary.csproj 库的引用。 MainProject 不会触发错误,但 pathToLibrary.csproj 会触发错误。请原谅我的命名约定不好:)
-
也就是说,我正在构建MainProject,它恰好引用了一个库。 Main 方法丢失错误是针对库的,而不是针对 MainProject。
-
看起来 WinExe OutputType 也被应用于 library.csproj。不仅适用于 MainProject.csproj
-
为什么要在命令行中指定呢?当然,项目应该知道要产生什么类型的输出,这就是它在 VS 中所做的。你有没有试过不在命令行指定它?
标签: c# visual-studio msbuild