Visual Studio / MSBuild - '清洁'解决方案

时间:2013-04-10 15:07:24

标签: visual-studio msbuild umbraco

我正在使用Web应用程序Umbraco。为了加快我的工作流程,我将'服务'Umbraco文件夹作为我的visual studio解决方案中的一个项目。这允许我创建我的umbraco Web应用程序然后依赖的其他项目(.Logic,.Wcf,.etc)。

此解决方案非常好用(易于调试,无xcopy等)。但是,如果发出'clean'(msbuild solution.sln / t:Clean),MSBuild会查看Umbraco的/ bin文件夹并按照您的预期,并清理此目录。导致无法构建的解决方案。 (例如,它看到解决方案中没有使用大量的DLL并删除它们 - 基本上删除了Umbraco应用程序)

  • 产品
    • Product.Logic(包含Logic的项目)
    • Product.Web(包含Umbraco应用程序的项目)

有没有办法让MSBuild意识到不应该删除这些文件(在/ bin中)?或者更好的方法是将Umbraco DLL和我的项目/ bin分开,然后在构建事件中重新组合它们?

我已经尝试将DLL作为引用添加到CSProj中,但这并没有解决问题。

<ItemGroup>
<Reference Include="businesslogic">
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core">
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>
</ItemGroup>
<!-- etc -->

祝福,

劳伦斯

2 个答案:

答案 0 :(得分:1)

我建议只需将所需的DLL复制到相应项目的bin文件夹中,作为需要它们的项目的Pre-build Event。这样,内置的“干净”功能不必定制,您的过程也不会那么脆弱。

答案 1 :(得分:1)

我已经找到了一个更强大的解决方案,受上述启发。

问题是,visual studio项目只能知道项目中的内容。通过直接在Umbraco wwwroot工作,视觉工作室BIN变得与Umbraco的混乱。这使得“清理”解决方案或准确跟踪DLL是不可能的。

我建议将'output'目录设置为'clean'位置,然后在构建期间复制文件。这对于多个项目解决方案尤其有用。

  1. 项目属性
  2. 构建标签
  3. 配置=所有配置
  4. 输出路径= .. \ output \
  5. 然后,您需要构建甚至将此目录的内容复制到Umbraco Bin中。这可以使用MSBUILD完成。这可以放在包含Umbraco的项目的* .csproj中。

    <!-- Copy output DLLs into BIN -->
    <ItemGroup>
      <ProjectsOutput Include="..\output\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(ProjectsOutput)"   DestinationFolder="bin\%(RecursiveDir)" />