SlowCheetah работает в VS, но не из командной строки
У меня есть облачный сервис Azure с веб-ролью и работником.
У меня проблема с рабочей ролью, когда я создаю пакет из командной строки. Мой рабочий - это простая библиотека классов с App.Config и преобразованием, выполненным с помощью SlowCheetah 2.5.5.
Если щелкнуть правой кнопкой мыши облачную службу Azure и упаковать ее, все в порядке, в конце концов, app.config будет преобразован SlowCheetah, как вы можете видеть ниже.
22>Target "CopyWorkerRoleFiles" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Windows Azure Tools\2.0\Microsoft.WindowsAzure.targets" from project "C:\dev\My\WindowsAzure\WindowsAzure.ccproj" (target "CopyRoleFiles" depends on it):
22> WorkerFiles=C:\dev\My\MyWorker\bin\QA\MyWorker.dll.config -> MyWorker.dll.config
22> WorkerFiles=C:\dev\My\MyWorker\obj\QA\MyWorker.dll -> MyWorker.dll
22> WorkerFiles=C:\dev\My\MyWorker\obj\QA\MyWorker.pdb -> MyWorker.pdb
22> WorkerFiles=C:\dev\My\MyWorker\obj\QA\SlowCheetah\App.config -> MyWorker.dll.config
Теперь из командной строки, когда я создаю пакет, SlowCheetah больше не используется, и у меня нет преобразования
CopyWorkerRoleFiles:
WorkerFiles=C:\CI\My\MyWorker\bin\QA\MyWorker.dll.config -> MyWorker.dll.config
WorkerFiles=C:\CI\My\MyWorker\bin\QA\App.config -> App.config
WorkerFiles=C:\CI\My\MyWorker\obj\QA\MyWorker.dll -> MyWorker.dll
WorkerFiles=C:\CI\My\MyWorker\obj\QA\MyWorker.pdb -> MyWorker.pdb
Как я могу найти то, что мне не хватает, чтобы иметь такое же поведение между VS и командной строкой?
РЕДАКТИРОВАТЬ:
Я создал небольшой облачный проект с одной рабочей ролью и slowcheetah, и все отлично работает в этом новом проекте... Проблема исходит из моего проекта, я дважды проверил csproj и ccproj из моего решения с теми из тестовое решение, и я не вижу большой разницы...
РЕДАКТИРОВАТЬ 2:
Вот моя команда msbuild для компиляции моего проекта
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\MyProject.sln
/p:Configuration=QA /p:TargetProfile=CloudQA /target:Publish /nr:false
РЕДАКТИРОВАТЬ 3: Я наконец сузил проблему до этого, я обновил Microsoft.Bcl до 1.1.3, я скомпилировал его, преобразование работает отлично!
Я обновил Microsoft.Net.Http до версии 2.2.13, скомпилировал его, преобразование не удалось.
Пакеты nuget добавили это в мой csproj...
<Reference Include="System.Net.Http" />
+ <Reference Include="System.Net.Http.Extensions">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net45\System.Net.Http.Extensions.dll</HintPath>
+ </Reference>
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
</Reference>
+ <Reference Include="System.Net.Http.Primitives">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net45\System.Net.Http.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http.WebRequest" />
Если я удаляю все ссылки, преобразование снова работает...
Я добавил эту ссылку, и преобразование все еще работало:
+ <Reference Include="System.Net.Http.WebRequest" />
Я добавил эти ссылки по одной
+ <Reference Include="System.Net.Http.Extensions">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net45\System.Net.Http.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http.Primitives">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net45\System.Net.Http.Primitives.dll</HintPath>
+ </Reference>
И преобразование проекта снова провалилось.
РЕДАКТИРОВАТЬ 4:
Дополнительные сведения об этой проблеме: пакеты Nuget Micorosoft.Net.HttpClient также изменяют app.config, когда System.Net.Http.Extensions и System.Net.Http.Primitives. Он добавляет следующее в app.config
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.13.0" newVersion="2.2.13.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.13.0" newVersion="4.2.13.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Вот выходные данные сборки со ссылками на эти сборки
17>_CopyAppConfigFile:
17> Copying file from "obj\Debug\Tests.MyProject.Data.csproj.App.config" to "bin\Debug\Tests.MyProject.Data.dll.config".
17>CopyFilesToOutputDirectory:
17> Copying file from "obj\Debug\Tests.MyProject.Data.dll" to "bin\Debug\Tests.MyProject.Data.dll".
17> Tests.MyProject.Data -> C:\dev\MyProject\Tests\Tests.MyProject.Data\bin\Debug\Tests.MyProject.Data.dll
17> Copying file from "obj\Debug\Tests.MyProject.Data.pdb" to "bin\Debug\Tests.MyProject.Data.pdb".
17>ScReplaceAppConfigItem:
17> Updated app.config to point to transformed file
17> AppConfigWithTargetPath: obj\Debug\Tests.MyProject.Data.csproj.App.config
17> AppConfigWithTargetPath.TargetPath: Tests.MyProject.Data.dll.config
Удаление ссылок Microsoft
17>_CopyAppConfigFile:
17> Copying file from "App.config" to "bin\Debug\Tests.MyProject.Data.dll.config".
17>CopyFilesToOutputDirectory:
17> Copying file from "obj\Debug\Tests.MyProject.Data.dll" to "bin\Debug\Tests.MyProject.Data.dll".
17> Tests.MyProject.Data -> C:\dev\MyProject\Tests\Tests.MyProject.Data\bin\Debug\Tests.MyProject.Data.dll
17> Copying file from "obj\Debug\Tests.MyProject.Data.pdb" to "bin\Debug\Tests.MyProject.Data.pdb".
17>ScReplaceAppConfigItem:
17> Copying file from "bin\Debug\Tests.MyProject.Data.dll.config" to "obj\Debug\SlowCheetah\App.config".
17> Updated app.config to point to transformed file
17> AppConfigWithTargetPath: obj\Debug\SlowCheetah\App.config
17> AppConfigWithTargetPath.TargetPath: Tests.MyProject.Data.dll.config