我在部署ClickOnce应用程序时遇到问题。我正在使用Visual Studio 2008。我有一个未部署的引用DLL文件。
在项目属性中 - > 发布标签 - > 应用程序文件
引用的DLL文件没有出现,所以我无法添加它。
DLL文件不是直接在我的代码中使用 - 但它被我引用的另一个DLL文件使用。
有没有办法可以手动编辑某些内容以确保复制DLL文件?
值得一提的是,DLL文件是来自DevExpress的第三方DLL文件:DevExpress.XtraPrinting.dll。我认为它可能被其他一个DevExpress DLL文件作为插件加载。
答案 0 :(得分:3)
我很清楚这个问题并且有一些事情可以解决它:
要强制VS知道您需要此dll,您需要使用它。这可以通过实例化ExportOptions或某个类似对象的实例来完成。 e.g。
var options = new ExportOptions(); options.Html.Title =“some text”;
现在请务必在“发布”标签的“应用文件”部分中强制将“发布状态”设置为“包含”。
这应该可以解决你的问题。
答案 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的解决方案也有效。