У меня есть автономный сервис WCF, состоящий из консольного приложения, вызывающего библиотеку сервиса WCF, которые являются отдельными проектами в одном решении.Проект сервисной библиотеки зависит от неуправляемой библиотеки DLL, которая копируется в ее выходную папку с помощью следующего тега <Targets>
в файле .csproj
<Target Name="Pesky64BitAPI" AfterTargets="AfterBuild">
<ItemGroup>
<UnmanagedDependencies Include="$(MSBuildProjectDirectory)..\Packages\Pesky64BitAPI*.*\lib\net461\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(UnmanagedDependencies)" DestinationFolder="$(OutputPath)"></Copy>
</Target>
. Это просто прекрасно копирует DLL для тестирования библиотеки.Однако для развертывания dll должна находиться в папке вывода сборки приложения консоли.Код консольного приложения следует на всякий случай:
public class Program
{
private static void Main(string[] args)
{
try
{
var host = OpenHost();
Console.ReadKey();
CloseHost(host);
}
catch (Exception exception)
{
// Omitted for brevity.
}
}
private static void CloseHost(ServiceHost host)
{
host.Close();
}
private static ServiceHost OpenHost()
{
var host = new ServiceHost(typeof(EdnaService));
// Non-blocking call.
host.Open();
return host;
}
}
Вопрос : есть ли способ изменить цели сборки или что-то еще, чтобы добавить dll к приложению, в котором размещена библиотека сервиса?Или мне нужно продублировать пакет NuGet в консольном приложении, даже если оно ему напрямую не нужно?