我正在使用Web应用程序Umbraco。为了加快我的工作流程,我将'服务'Umbraco文件夹作为我的visual studio解决方案中的一个项目。这允许我创建我的umbraco Web应用程序然后依赖的其他项目(.Logic,.Wcf,.etc)。
此解决方案非常好用(易于调试,无xcopy等)。但是,如果发出'clean'(msbuild solution.sln / t:Clean),MSBuild会查看Umbraco的/ bin文件夹并按照您的预期,并清理此目录。导致无法构建的解决方案。 (例如,它看到解决方案中没有使用大量的DLL并删除它们 - 基本上删除了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 -->
祝福,
劳伦斯
答案 0 :(得分:1)
我建议只需将所需的DLL复制到相应项目的bin文件夹中,作为需要它们的项目的Pre-build Event。这样,内置的“干净”功能不必定制,您的过程也不会那么脆弱。
答案 1 :(得分:1)
我已经找到了一个更强大的解决方案,受上述启发。
问题是,visual studio项目只能知道项目中的内容。通过直接在Umbraco wwwroot工作,视觉工作室BIN变得与Umbraco的混乱。这使得“清理”解决方案或准确跟踪DLL是不可能的。
我建议将'output'目录设置为'clean'位置,然后在构建期间复制文件。这对于多个项目解决方案尤其有用。
然后,您需要构建甚至将此目录的内容复制到Umbraco Bin中。这可以使用MSBUILD完成。这可以放在包含Umbraco的项目的* .csproj中。
<!-- Copy output DLLs into BIN -->
<ItemGroup>
<ProjectsOutput Include="..\output\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(ProjectsOutput)" DestinationFolder="bin\%(RecursiveDir)" />