MSBuild未创建bin目录

MSBuild未创建bin目录,msbuild,app-config,web.config-transform,Msbuild,App Config,Web.config Transform,我试图将生成系统从VisualStudio迁移到MSBuild上(以便于切换到自动CI工具),但我尝试切换的一个项目出现问题 解决方案中不构建的两个项目都设置了配置转换,根据我从csproj文件中收集到的信息,在这两种情况下,有一个目标TranformOnBuild targets似乎在PrepareforBuild之前运行。问题是此时尚未创建bin文件夹 app.config中处理此问题的部分是: <Target Name="TransformOnBuild" BeforeTargets

我试图将生成系统从VisualStudio迁移到MSBuild上(以便于切换到自动CI工具),但我尝试切换的一个项目出现问题

解决方案中不构建的两个项目都设置了配置转换,根据我从csproj文件中收集到的信息,在这两种情况下,有一个目标TranformOnBuild targets似乎在PrepareforBuild之前运行。问题是此时尚未创建bin文件夹

app.config中处理此问题的部分是:

<Target Name="TransformOnBuild" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <outputTypeExtension Condition="'$(OutputType)' == 'exe' or '$(OutputType)' == 'winexe'">exe</outputTypeExtension>
    <outputTypeExtension Condition="'$(OutputType)' == 'Library'">dll</outputTypeExtension>
  </PropertyGroup>
  <TransformXml Condition="'$(AppCfgType)' == 'Web' and Exists('$(ConfigDir)\Web.Base.config') and Exists('$(ConfigDir)\Web.$(Configuration).config')" Source="$(ConfigDir)\Web.Base.config" Transform="$(ConfigDir)\Web.$(Configuration).config" Destination="Web.config" />
  <TransformXml Condition="'$(AppCfgType)' == 'App' and $(InlineAppCfgTransforms) == true and Exists('$(ConfigDir)\App.Base.config') and Exists('$(ConfigDir)\App.$(Configuration).config')" Source="$(ConfigDir)\App.Base.config" Transform="$(ConfigDir)\App.$(Configuration).config" Destination="App.config" />
  <TransformXml Condition="'$(AppCfgType)' == 'App' and $(InlineAppCfgTransforms) != true and Exists('App.config') and Exists('App.$(Configuration).config')" Source="App.config" Transform="App.$(Configuration).config" Destination="$(OutDir)$(AssemblyName).$(outputTypeExtension).config" />
  <Copy Condition="'$(AppCfgType)' == 'Web' and Exists('$(ConfigDir)\Web.Base.config') and !Exists('$(ConfigDir)\Web.$(Configuration).config')" SourceFiles="$(ConfigDir)\Web.Base.config" DestinationFiles="Web.config" />
  <Copy Condition="'$(AppCfgType)' == 'App' and $(InlineAppCfgTransforms) == true and Exists('$(ConfigDir)\App.Base.config') and !Exists('$(ConfigDir)\App.$(Configuration).config')" SourceFiles="$(ConfigDir)\App.Base.config" DestinationFiles="App.config" />
  <Copy Condition="'$(AppCfgType)' == 'App' and $(InlineAppCfgTransforms) != true and Exists('App.config') and !Exists('App.$(Configuration).config')" SourceFiles="App.config" DestinationFiles="$(OutDir)$(AssemblyName).$(outputTypeExtension).config" />
</Target>

exe
动态链接库
我不确定让MSBuild创建必要目录的推荐方法是什么,或者是否最好在生成完成后将转换移动到某个阶段

如果我手动创建目录,构建可以正常工作,但我希望在MS build中自动执行此操作,以便在移动到构建服务器时更轻松

解决这个问题的建议方法是什么

谢谢


Richard。

只需使用MakeDir任务在TransformOnBuild中创建所需的目录?你说得对-抱歉。我对使用MSBuild非常陌生,因为我大部分时间都在Visual Studio中工作。我意识到项目文件中的代码是由一个Visual Studio扩展创建的,该扩展在VS2013和VS2015中为非web项目启用配置转换,这就解释了为什么它不是开箱即用的。我将添加缺少的MakeDir任务,然后将其作为插件作者的修复建议。非常感谢。