0

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

该解决方案效果很好(易于调试,无需 xcopy 等)。但是,如果发出“清理”命令 (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 -->

最好的祝愿,

劳伦斯

4

2 回答 2

1

我建议将所需的 DLL 复制到相应项目的 bin 文件夹中,作为需要它们的项目的预构建事件。这样,内置的“清洁”功能就不必定制,您的流程也不会那么脆弱。

于 2013-04-10T15:17:19.980 回答
1

受上述启发,我现在找到了一个更强大的解决方案来解决这个问题。

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

我建议将“输出”目录设置为“干净”位置,然后在构建期间复制文件。这对于多个项目解决方案特别有效。

  1. 项目属性
  2. 构建选项卡
  3. 配置 = 所有配置
  4. 输出路径 = ..\output\

然后,您甚至需要构建将该目录的内容复制到您的 Umbraco Bin 中。这可以使用 MSBUILD 完成。这可以放在包含 Umbraco 的项目的 *.csproj 中。

<!-- Copy output DLLs into BIN -->
<ItemGroup>
  <ProjectsOutput Include="..\output\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(ProjectsOutput)"   DestinationFolder="bin\%(RecursiveDir)" />
于 2013-09-19T13:50:11.990 回答