Skip to content

Commit 2e864b0

Browse files
committed
Embeded dlls
1 parent ed7bca5 commit 2e864b0

File tree

2 files changed

+34
-28
lines changed

2 files changed

+34
-28
lines changed

TumblrThemeSelect/Loader.cs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,41 @@
22
using System.IO;
33
using System.Linq;
44
using System.Reflection;
5-
using RestSharp.Extensions;
5+
66

77
namespace TumblrThemeSelect
88
{
9-
public class Loader
9+
public static class Loader
1010
{
1111
[STAThread]
1212
public static void Main()
1313
{
14-
AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;
14+
var executingAssembly = Assembly.GetExecutingAssembly();
15+
var assemblies = executingAssembly.GetManifestResourceNames().Where(n => n.EndsWith(".dll")).ToDictionary(n => n, n => Assembly.Load(executingAssembly.GetManifestResourceStream(n).ReadAsBytes()));
16+
17+
AppDomain.CurrentDomain.AssemblyResolve += (s, e) =>
18+
{
19+
return assemblies.FirstOrDefault(kv => kv.Key == $"{new AssemblyName(e.Name).Name}.dll").Value;
20+
};
1521

1622
App.Main();
1723
}
1824

19-
private static Assembly OnResolveAssembly(object sender, ResolveEventArgs e)
25+
public static byte[] ReadAsBytes(this Stream input)
2026
{
21-
var thisAssembly = Assembly.GetExecutingAssembly();
22-
23-
var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(new AssemblyName(e.Name).Name + ".dll"));
24-
25-
if (!resources.Any()) return null;
26-
27-
try
27+
var array = new byte[16384];
28+
byte[] result;
29+
using (var memoryStream = new MemoryStream())
2830
{
29-
return Assembly.Load(thisAssembly.GetManifestResourceStream(resources.First()).ReadAsBytes());
30-
}
31-
catch (IOException)
32-
{
33-
return null;
34-
}
35-
catch (BadImageFormatException)
36-
{
37-
return null;
31+
int count;
32+
while ((count = input.Read(array, 0, array.Length)) > 0)
33+
{
34+
memoryStream.Write(array, 0, count);
35+
}
36+
result = memoryStream.ToArray();
3837
}
38+
return result;
3939
}
40+
4041
}
4142
}

TumblrThemeSelect/TumblrThemeSelect.csproj

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@
8181
<Reference Include="Microsoft.CSharp" />
8282
<Reference Include="Newtonsoft.Json">
8383
<HintPath>Embeded\Newtonsoft.Json.dll</HintPath>
84+
<Private>True</Private>
8485
</Reference>
8586
<Reference Include="RestSharp">
8687
<HintPath>Embeded\RestSharp.dll</HintPath>
88+
<Private>True</Private>
8789
</Reference>
8890
<Reference Include="System" />
8991
<Reference Include="System.Runtime.Serialization" />
@@ -97,6 +99,7 @@
9799
<Reference Include="PresentationFramework" />
98100
<Reference Include="Xceed.Wpf.Toolkit">
99101
<HintPath>Embeded\Xceed.Wpf.Toolkit.dll</HintPath>
102+
<Private>True</Private>
100103
</Reference>
101104
</ItemGroup>
102105
<ItemGroup>
@@ -156,25 +159,27 @@
156159
</BootstrapperPackage>
157160
</ItemGroup>
158161
<ItemGroup>
159-
<EmbeddedResource Include="Embeded\Newtonsoft.Json.dll" />
160-
<EmbeddedResource Include="Embeded\RestSharp.dll" />
161-
<EmbeddedResource Include="Embeded\Xceed.Wpf.Toolkit.dll" />
162+
<None Include="Embeded\Newtonsoft.Json.dll" />
163+
<None Include="Embeded\RestSharp.dll" />
164+
<None Include="Embeded\Xceed.Wpf.Toolkit.dll" />
162165
</ItemGroup>
163166
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
164167
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
165168
Other similar extension points exist, see Microsoft.Common.targets.
166169
<Target Name="BeforeBuild">
167170
</Target>
168-
<Target Name="AfterBuild">
169-
</Target>
170171
-->
171172
<Target Name="AfterResolveReferences">
172173
<ItemGroup>
173174
<EmbeddedResource Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
174-
<LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)
175-
</LogicalName>
175+
<LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
176176
</EmbeddedResource>
177177
</ItemGroup>
178178
</Target>
179-
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
179+
<Target Name="AfterBuild">
180+
<ItemGroup>
181+
<FilesToDelete Include="$(OutDir)\*.dll"/>
182+
</ItemGroup>
183+
<Delete Files="@(FilesToDelete)" />
184+
</Target>
180185
</Project>

0 commit comments

Comments
 (0)