我正在使用MEF来做一些粗略的插件架构。这很好用。但是,当我使用visual studio包/发布构建任务(我通过NAnt / MSbuild调用)进行部署时。我的未引用的插件程序集未包含在程序包中,因此未部署。
有没有办法告诉VS / MSBuild包含这些DLL?
他们住在/ bin / Extensions。
干杯, 罗布
答案 0 :(得分:2)
通过上面的操作,程序集仍然是你最初拥有它们的物理位置(我假设一个引用文件夹),当你构建它们时,它们被复制到bin文件夹。
答案 1 :(得分:2)
我在这篇博文中找到了答案。它完美无缺:http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx
基本上这是我添加到项目文件中的代码。
<!--
Added by RSL to deal with deploying the plugins folder
Followed tutorial here:
http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx
-->
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CollectExtensionDLLs;
CollectExtensionViews;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CollectExtensionDLLs">
<ItemGroup>
<_CustomFiles Include="bin\Extensions\**\*"/>
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\Extensions\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<Target Name="CollectExtensionViews">
<ItemGroup>
<_CustomFiles Include="Views\Extensions\**\*"/>
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Views\Extensions\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!-- //// End Rob's modifications -->
答案 2 :(得分:1)