1

我有一个 Azure 云服务,有一个 Web 角色和一个工作人员。

当我从命令行创建包时,我遇到了辅助角色的问题。我的工人是一个简单的类库,带有 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:

关于这个问题的更多信息,Micorosoft.Net.HttpClient Nuget Packages 也在修改 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
4

1 回答 1

0

使用 Slowcheetah 2.5.7 解决的问题

于 2013-09-02T12:51:34.647 回答