【问题标题】:SlowCheetah working in VS but not from command lineSlowCheetah 在 VS 中工作,但不是从命令行
【发布时间】:2013-06-28 22:25:40
【问题描述】:

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

当我从命令行创建包时,我遇到了辅助角色的问题。 我的 worker 是一个带有 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 与测试解决方案中的 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 在 System.Net.Http.Extensions 和 System.Net.Http.Primitives 时也在修改 app.config。它将以下内容添加到 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

删除微软引用

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

【问题讨论】:

  • 你能提供你正在执行的命令吗?
  • 你好 Sayed,仅供参考,我已经为我的所有项目重新创建了一个解决方案,并且它正在使用相同的构建命令...
  • 你知道我应该从哪里开始调试这个问题吗?谢谢
  • 从命令行构建并比较构建日志以查看发生了什么。
  • @SayedIbrahimHashimi 我刚刚又遇到了这个问题......昨天一切正常,我已经更新了 Microsoft.Bcl 和 Microsoft.Net.Http 的 nuget 包。我有同样的错误。您知道可能出现的问题吗?

标签: azure visual-studio-2012 .net-4.5 slowcheetah


【解决方案1】:

Slowcheetah 2.5.7 解决的问题

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 2017-08-05
    • 2010-11-30
    • 2011-05-11
    • 2022-11-26
    • 2018-12-25
    • 1970-01-01
    • 2017-07-26
    • 2023-03-28
    相关资源
    最近更新 更多