Visual Studio SSIS 2017和第三方.NET大会

z2acfund  于 2023-01-31  发布在  .NET
关注(0)|答案(1)|浏览(147)

我有解决方案TestName.sln(类库),它是基于目标框架.Net标准2.0构建的。
TestName.sln包含了一些依赖项1,2(包括它自己的包),3,来自NuGet,看起来像一棵树。
当我打包TestName.sln时,我得到了TestName.dll,我希望在SSIS 2017中使用TestName.dll。
我将TestName.dll添加到全局程序集缓存中,没有任何问题。
但是当我尝试使用TestName.dll时,我只能看到TestName.sln中的类,看不到类,也不能使用TestName.sln中包含的依赖项1、2、3、4。
如果可能的话,我需要做些什么才能将所有依赖项放在一个.dll文件中?或者我应该如何将所有依赖项链接到一个文件中以在SSIS 2017中使用?

68bkxrlz

68bkxrlz1#

可使用ILMerge将多个从属关系集中到单个组件中。

**首先,**从nuget安装ILMerge.MSBuild.Tasks包。
其次,通过添加以下代码编辑要合并的项目的 *.csproj文件。

<UsingTask TaskName="ILMerge.MSBuild.Tasks.ILMerge" AssemblyFile="$(SolutionDir)\packages\ILMerge.MSBuild.Tasks.1.0.0.3\tools\ILMerge.MSBuild.Tasks.dll" />
  <Target Name="AfterBuild">
    <ItemGroup>
      <MergeAsm Include="$(OutputPath)$(TargetFileName)" />
      <MergeAsm Include="$(OutputPath)LIB1_To_MERGE.dll" />
      <MergeAsm Include="$(OutputPath)LIB2_To_MERGE.dll" />
    </ItemGroup>
    <PropertyGroup>
      <MergedAssembly>$(ProjectDir)$(OutDir)MERGED_ASSEMBLY_NAME.exe</MergedAssembly>
    </PropertyGroup>
    <Message Text="ILMerge @(MergeAsm) -&gt; $(MergedAssembly)" Importance="high" />
    <ILMerge InputAssemblies="@(MergeAsm)" OutputFile="$(MergedAssembly)" TargetKind="SameAsPrimaryAssembly" />
  </Target>

最后,照常构建项目。

相关问题