ClickOnce部署,但未部署引用的DLL文件

时间:2010-07-13 08:24:27

标签: clickonce

我在部署ClickOnce应用程序时遇到问题。我正在使用Visual Studio 2008。我有一个未部署的引用DLL文件。

在项目属性中 - > 发布标签 - > 应用程序文件

引用的DLL文件没有出现,所以我无法添加它。

DLL文件不是直接在我的代码中使用 - 但它被我引用的另一个DLL文件使用。

有没有办法可以手动编辑某些内容以确保复制DLL文件?

值得一提的是,DLL文件是来自DevExpress的第三方DLL文件:DevExpress.XtraPrinting.dll。我认为它可能被其他一个DevExpress DLL文件作为插件加载。

3 个答案:

答案 0 :(得分:3)

我很清楚这个问题并且有一些事情可以解决它:

  1. 在项目中添加对DevExpress.XtraPrinting.dll dll的引用。
  2. 在参考部分设置DevExpress.XtraPrinting.dll为Copy Local = true(这似乎有助于VS更多地记住dll)
  3. 要强制VS知道您需要此dll,您需要使用它。这可以通过实例化ExportOptions或某个类似对象的实例来完成。 e.g。

    var options = new ExportOptions(); options.Html.Title =“some text”;

  4. 现在请务必在“发布”标签的“应用文件”部分中强制将“发布状态”设置为“包含”。

  5. 这应该可以解决你的问题。

答案 1 :(得分:0)

将第三方DLL文件添加到项目中(右键单击项目,添加现有项目...)。将“构建操作”设置为“无”,并将“复制到输出目录”设置为“不复制”。

删除对该DLL文件的引用。重新添加引用,然后浏览到项目中的 DLL文件并选择它。

在参考文献中,将“复制本地”设置为“True”。

现在它应该显示在应用程序文件中,因为您的代码引用了本地副本,并且它被设置为部署它。

请注意,这不适用于所有程序集;有些只是必须安装在GAC中。但它可以免费试用。如果它必须在GAC中,它会告诉您何时尝试安装它。

答案 2 :(得分:0)

感谢您的回复 - 但我发现手动编辑csproj文件对我有用。对于遇到此问题的其他人,您可能需要添加您想要部署的dll,如下所示:

<PublishFile Include="DevExpress.XtraPrinting.v9.3">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Include</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>

另外,请确保在参考部分中有此内容:

<Reference Include="DevExpress.XtraPrinting.v9.3, Version=9.3.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\SomePath\DevExpress.XtraPrinting.v9.3.dll</HintPath>
</Reference>

我还想指出RobinDotNet的解决方案也有效。