我创建了一个ASP.NET webforms(4.6)网站,其中包含一些第三方组件。为了使其工作,我创建了一个包含所需DLL的SharedResources文件夹。我添加了一个引用,这些DLL在发布时被复制到BIN - GREAT。但是还有一些其他的DLL无法引用,因为它们不是有效的程序集或COM组件。
如何添加到文件夹(SharedResources \ 3rdParty)中的build,dll,这样当我点击“发布”#39;它将所有这些dll转储到网站的bin文件夹中。
(试图避免这种情况) 我已将dll Build操作设置为"内容 - 始终复制"这给了我一个〜\ SharedResources \ 3rdParty \中的DLL文件夹,然后应用程序抱怨丢失了dll,所以我手动将它们复制到bin中 - 这可能是对的!
由于
答案 0 :(得分:0)
右键单击您的项目转到属性,然后在构建事件选项卡中将其粘贴到您的预构建事件命令行:copy $(ProjectDir)SharedResources \ 3rdParty * .dll $(ProjectDir)$(OutDir)
答案 1 :(得分:0)
当您发布网站时,这将不起作用。您将必须在项目文件或单独的目标文件中创建自己的目标,并按如下所示进行调用-
添加关注者-
<ItemGroup>
<ThirdPartyDllDependencies Include="$(SolutionDir)..\..\Lib\ThirdPartyDll\*.dll" SkipUnchangedFiles="true" />
</ItemGroup>
<Target Name="PublishThirdPartyDllDependencies">
<Copy SourceFiles="@(ThirdPartyDllDependencies)" DestinationFolder="$(OutDir)\" />
<Copy SourceFiles="@(ThirdPartyDllDependencies)" DestinationFolder="$(WebProjectOutputDir)\bin\" />
</Target>
<!-- This target is responsible for adding the ThirdPartyDll and dependencies to the bin directory while Publishing the website. -->
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="$(SolutionDir)..\..\Lib\ThirdPartyDll\ThirdPartyDll11\64Bit\*.dll" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>$(WebProjectOutputDir)\bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
<DestinationRelativePath>$(OutDir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>