1

我们将 Nlog 用作 Azure 应用程序的 Worker Role 的日志记录工具。它需要 NLog.config 文件。我们安装了“SlowCheetah - XML Transforms”,并且有两个 Debug/Release 转换)。

解决方案确实成功重建。

但是当我尝试运行时,出现以下错误。(我在我的一个 Windows 服务应用程序中使用了 nolog.config 的精确转换,它在那里工作正常)。

错误 163 项目列表“OutputGroups”中的项目“bin\Debug\NLog.config”未定义元数据“TargetPath”的值。要使用此元数据,请通过指定 %(OutputGroups.TargetPath) 对其进行限定,或确保此列表中的所有项目都为此元数据定义一个值。C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\1.6\Microsoft.WindowsAzure.targets 2299 5 Insight.CloudWeb

4

2 回答 2

0

我有一个解决办法。现在,您应该能够使用 SlowCheetah 为 Azure Worker Roles 转换 app.config 以及其他 XML 文件。一旦我得到修复验证,我将发布更新到 VS 库。

如果您想尝试修复,可以在https://dl.dropbox.com/u/40134810/SlowCheetah/issue-44/SlowCheetah-issue-44.zip下载更新的 VSIX 。如果您有兴趣跟进此问题,请使用问题 #44

于 2013-01-04T07:51:48.967 回答
0

我不知道这是否是由 SlowCheetah 扩展完成的,但您能否验证您的 *.csproj 文件是否包含与此类似的 AfterCompile 目标?

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

<UsingTask TaskName="TransformXml"
  AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

<Target Name="AfterCompile" Condition="exists(’app.$(Configuration).config’)">
  <TransformXml Source="NLog.config"
    Destination="$(IntermediateOutputPath)$(TargetFileName).config"
    Transform="NLog.$(Configuration).config" />
  <ItemGroup>
    <AppConfigWithTargetPath Remove="NLog.config"/>
    <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
      <TargetPath>$(TargetFileName).config</TargetPath>
    </AppConfigWithTargetPath>
  </ItemGroup>
</Target>

查看 Oleg 的博文 .Config File Transformation下的App.config File Transformation以获取更多信息。

于 2012-08-03T07:16:14.523 回答