Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Team Foundation Server сборка проектов с NuGet / 5 сообщений из 5, страница 1 из 1
05.12.2013, 12:19
    #38490061
boxvtk621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Team Foundation Server сборка проектов с NuGet
Есть ли здесь люди работающие с Build Service в Team Foundation Server?
В процессе разворачивания TFS для теста, столкнулся с проблемой в работе Build Service.

Есть виртуальная машина на Windows Server 2008 без доступа к интернету (и не сделать).
Есть TFS 2013
Есть NuGet, пакеты которого расположены в сетевой локальной папке.
Есть простенький тестовый проект типа "Hello World" к которому подключены пара библиотек через NuGet

В Visual Studio все собирается и работает, однако при попытке собирать проект на стороне TFS происходят ошибки. Методом проб и ошибок выявилось, что библиотеки из сетевой папки для сборки не подгружаются. Build Service постоянно намеревается загружать пакеты из интернета, а как я уже сказал, подключить виртуальную машину к интернету нельзя. В конфигурации NuGet внутри проекта в папке .nuget изменил стандартную ссылку в интернет, на путь до сетевой папки однако результата это не дало.
На сайте NuGet нашел мануал , однако видимо я делаю что то не так.

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

Если кто-то работает с сервисом сборок TFS'a и собирает на нем проекты с подключенным Nuget или знает методику работы, прошу подсказать решение данной проблемы.
...
Рейтинг: 0 / 0
05.12.2013, 12:40
    #38490099
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Team Foundation Server сборка проектов с NuGet
boxvtk621,

Задать local feed в <packageSources> и его же в <activePackageSource> в NuGet.Config пробовали? Я бы еще в <packageSources> удалил веб-источники пакетов (т.е. чтобы остался только источник из сетевой папки).
...
Рейтинг: 0 / 0
05.12.2013, 13:51
    #38490261
boxvtk621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Team Foundation Server сборка проектов с NuGet
Вот так выглядит мой конфиг.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>

<!-- Enable the restore command to run before builds -->
<RestorePackages Condition="  '$(RestorePackages)' == '' 
">false</RestorePackages>

<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>

<!-- Determines if package restore consent is required to restore 
packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' 
">true</RequireRestoreConsent>

<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' 
">false</DownloadNuGetExe>
</PropertyGroup>

<ItemGroup Condition=" '$(PackageSources)' == '' ">
<PackageSource Include="\\ad\home\локальный путь до нагета\NuGet" />
</ItemGroup>

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), 
".nuget"))</NuGetToolsPath>
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), 
"packages.config"))</PackagesConfig>
</PropertyGroup>

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on 
windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
<PackagesConfig>packages.config</PackagesConfig>
</PropertyGroup>

<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' 
">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' 
">@(PackageSource)</PackageSources>

<NuGetCommand Condition=" '$(OS)' == 
'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono 
--runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>

<PackageOutputDir Condition="$(PackageOutputDir) == 
''">$(TargetDir.Trim('\\'))</PackageOutputDir>

<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' 
">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND 
'$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>

<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source 
"$(PackageSources)"  $(NonInteractiveSwitch) $(RequireConsentSwitch) 
-solutionDir "$(SolutionDir) " </RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties 
Configuration=$(Configuration) $(NonInteractiveSwitch) -OutputDirectory 
"$(PackageOutputDir)" -symbols</BuildCommand>

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
             RestorePackages;
             $(BuildDependsOn);
</BuildDependsOn>

<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
             $(BuildDependsOn);
             BuildPackage;
</BuildDependsOn>
</PropertyGroup>

<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe  -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND 
!Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
         Take advantage of MsBuild's build dependency tracking to make 
sure that we only ever download nuget.exe once.
         This effectively acts as a lock that makes sure that the 
download operation will only happen once and all
         parallel builds will have to wait for it to complete.
         -->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" 
Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" 
/>
</Target>

<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" 
'$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
               Condition="'$(OS)' != 'Windows_NT' And 
Exists('$(PackagesConfig)')" />

<Exec Command="$(RestoreCommand)"
               LogStandardErrorAsError="true"
               Condition="'$(OS)' == 'Windows_NT' And 
Exists('$(PackagesConfig)')" />
</Target>

<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
               Condition=" '$(OS)' != 'Windows_NT' " />

<Exec Command="$(BuildCommand)"
               LogStandardErrorAsError="true"
               Condition=" '$(OS)' == 'Windows_NT' " />
</Target>

<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" 
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
                 try {
                     OutputFilename = Path.GetFullPath(OutputFilename);

                     Log.LogMessage("Downloading latest version of 
NuGet.exe...");
                     WebClient webClient = new WebClient();

webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);

                     return true;
                 }
                 catch (Exception ex) {
                     Log.LogErrorFromException(ex);
                     return false;
                 }
             ]]>
</Code>
</Task>
</UsingTask>
</Project>
...
Рейтинг: 0 / 0
05.12.2013, 14:02
    #38490279
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Team Foundation Server сборка проектов с NuGet
boxvtk621,

Я выше писал про конфиг самого Nuget. Он находится по адресу %AppData%\NuGet\NuGet.config.
...
Рейтинг: 0 / 0
05.12.2013, 15:05
    #38490407
boxvtk621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Team Foundation Server сборка проектов с NuGet
Попытал разные варианты, отдельно каждый и вместе. Результат тот-же, билд не видит пакеты.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="TestSource" value="\\ad\home\D140\Подразделения\Разработка и 
внедрение ИС\Общее\NuGet" />
</packageSources>
<activePackageSource>
<add key="All" value="\\ad\home\D140\Подразделения\Разработка и 
внедрение ИС\Общее\NuGet" />
</activePackageSource>
<packageRestore>
<add key="automatic" value="True" />
</packageRestore>
</configuration>
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Team Foundation Server сборка проектов с NuGet / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]