2015-10-06 2 views
0

У меня есть скрипт сборки FAKE, который будет работать отлично, если я создам проект один раз с помощью VisualStudio, но если я попытаюсь сделать новую сборку, тогда он выкидывает ошибки, говоря, что не может найти пространство имен как множества пакетов nuget, так и проектов зависимых визуальных студий.FAKE MSBuild шаг не может разрешить ссылки

Я использую MSBuildRelease фальшивки и переходящий в файле .sln так:

Target "BuildWindowsProject" (fun _ -> 
    MSBuildRelease 
     "" 
     "Build" 
     [ "./Source/My.Project.sln" ] 
     |> Log "Windows-Build: " 
) 

Это дает ряд ошибок, такому как ниже, но они включают в себя как проекты в рамках решения и внешних пакетов NuGet.

The type or namespace name 'Caliburn' could not be found (are you missing a using directive or an assembly reference?) 

Я заметил, что еще в 2011 году это была размещена - MSBuild cannot find a reference но это довольно старая, и я не могу найти более поздние вхождения выпуска онлайн.

Он отлично работает, если я сначала создаю визуальную студию, а затем запустил сценарий сборки, но это не решает проблему для сервера сборки. Что я делаю не так?

ответ

1

Вы должны выполнить глубокую диагностику самостоятельно, потому что вопрос в соответствии с требованиями требует, чтобы исходный код был опубликован здесь, также он может зависеть от среды, в которой работает скрипт, чтобы получить правильный ответ.

У вас есть опция на выходе MSBuild utility to pass verbosity level. Используйте следующее значение переключателя, чтобы получить подробную информацию о том, как ссылки будут решены в процессе сборки:

msbuild ./Source/My.Project.sln /t:Build /v:d 

Используя эту команду, вы можете перейти к шагам, называемых ResolveAssemblyReference и ResolveProjectReference. Вы можете увидеть все пути, где он будет искать для сборок, и если преуспели:

4> Primary reference "System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". 
4>  Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Runtime.Remoting.dll". 
4>  Reference found at search path location "{TargetFrameworkDirectory}". 
4>   For SearchPath "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64". 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64\System.Runtime.Remoting.winmd", but it didn't exist. 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64\System.Runtime.Remoting.dll", but it didn't exist. 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64\System.Runtime.Remoting.exe", but it didn't exist. 
4>   For SearchPath "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64". 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64\System.Runtime.Remoting.winmd", but it didn't exist. 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64\System.Runtime.Remoting.dll", but it didn't exist. 
4>   Considered "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64\System.Runtime.Remoting.exe", but it didn't exist. 
4>   For SearchPath "{TargetFrameworkDirectory}". 
4>   Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Runtime.Remoting.winmd", but it didn't exist. 
4>  This reference is not "CopyLocal" because it's a prerequisite file. 
4>  The ImageRuntimeVersion for this reference is "v4.0.30319". 

Вы также можете проверить, какие ссылки были переданы компилятором, если вы посмотрите на командную строку, которая была сгенерирована по MSBuild и выяснить, если есть ссылка вы должны в

Для п:.

4> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe 
... 
/AI"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
...  
/FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" 
/FUE:\YourProj\bin\Debug\Your.Proj.dll 
/FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Configuration.dll" 
... 
/errorReport:prompt 
YourSourceCodeFiles.cpp 
/clr:nostdlib 

Для CSC:

2> C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe 
... 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\mscorlib.dll" 
/reference:E:\svn\PRM\trunk\PRM30\bin\Debug\Prm.Base.dll 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Configuration.dll" 
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll" 
... 

(большинство параметров были опущены для простоты)

Смежные вопросы