Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 从命令行编译C#.Net_C# 4.0_Msbuild_Nuget - Fatal编程技术网

C# 4.0 从命令行编译C#.Net

C# 4.0 从命令行编译C#.Net,c#-4.0,msbuild,nuget,C# 4.0,Msbuild,Nuget,我试图只使用命令行编译一个c#.net项目,这样我就可以创建一个bat文件来编译和运行Selenium测试。我从SVN导出了代码。我打开了命令提示符,可以使用下面的命令恢复包 然后,当我尝试使用msbuild编译时,它无法引用通过nuget添加的dll。我知道在VisualStudio中,通过PackageManager控制台,我可以使用命令(update-reinstall)并使其工作,但在没有VisualStudio的情况下如何做到这一点 ==== bat file ====== REM R

我试图只使用命令行编译一个c#.net项目,这样我就可以创建一个bat文件来编译和运行Selenium测试。我从SVN导出了代码。我打开了命令提示符,可以使用下面的命令恢复包

然后,当我尝试使用msbuild编译时,它无法引用通过nuget添加的dll。我知道在VisualStudio中,通过PackageManager控制台,我可以使用命令(update-reinstall)并使其工作,但在没有VisualStudio的情况下如何做到这一点

==== bat file ======
REM Restore External Pacakages
nuget restore packages.config -PacakgesDirectory D:\Testproject\packages"
msbuid TestProject.sln

基本上,您需要引用Msbuild可执行文件

C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe

然后需要将
.sln
.csproj
文件路径(取决于您的工作文件夹)作为参数传递

您还可以指定msbuild的目标,例如Visual Studio中存在的清理目标、重建目标、构建目标

最后的命令可能如下所示:

模板

{.NetFrameworkPath}\msbuild.exe {pathToSln} /t:{Build,Clean,Rebuild}
示例

C:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe TestProject.sln /t:Build

C:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe TestProject.sln /t:Clean;Build 

是的,我也这么做。我遇到的问题是,我通过nuget(在VisualStudio外部的命令提示符中)还原了包。当我编译时,这些DLL没有被引用,并且它给出了一个错误“找不到类型或名称空间名称…”只需按照命令
D:\projects\contoso\>nuget.exe restore contoso.sln
ref即可。您还可以编辑.sln文件,其中有一个布尔值指示您是否要在构建时还原nuget包。
C:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe TestProject.sln /t:Build

C:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe TestProject.sln /t:Clean;Build