我有一个WPF应用程序,其中包含许多引用主程序集的XAML代码(用于小部件,样式和这些东西).
但是现在我需要更改.EXE的名称,而不是更新这么多依赖项的源主程序集.
如何做到尽可能简单?
我有一个如下所示的代码
public static Type ToType(Type sType)
{
Assembly assembly = Assembly.Load(SerializableType.AssemblyName);
type = assembly.GetType(sType.Name);
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
在UI中,如果我为基类设置值没有问题,因为它们的程序集创建正常方式,但如果为用户定义的类设置值,则它们的程序集创建不同的方式,如下所示
基于这个问题,我尝试使用<codebase>定位外部组件.现在,当我运行该程序时,我收到一条错误消息,指出私有程序集位于appbase之外.我该如何解决这个问题?我看到的一个建议就是签署集会.我做了这个,但后来我的程序找不到程序集.当我取消签名时,我收到outside the appbase错误.如何加载位于其他地方使用<codebase>而不是安装到GAC的程序集?(探测也不起作用,似乎它仍然必须存在于应用程序文件夹中)我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NGameHost"
culture="neutral" />
<codeBase version="1.0.0.0"
href="C:/Program Files/NetworkGame3/api/NGameHost.exe"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud) c# codebase console-application .net-assembly assembly-signing
当我为WebApi安装NuGet包时,它给了我1.0.0.0版的System.Net.Http,但它引用了版本2.
我似乎无法找到我的生活版本2.当我下载.net 4.5时,我得到System.Net.Http版本4.0.315.x,但我不能使用它,因为Web Api程序集引用版本2.0.0.0.
有谁知道我在哪里可以找到这个版本2.0.0.0?我已经尝试过NuGet包管理器,mvc4,.net 4.5,没有什么能给我版本2.
提前致谢.
system.net .net-assembly nuget-package asp.net-web-api system.net.httpwebrequest
在网站上搜索后,我发布了这个问题.我知道默认程序集是"文化中立"的,并且可以创建仅包含具有文化特定信息的资源(而不是代码)的附属程序集,并将它们放在与文化名称相同的文件夹中(即en-us) .但问题是,什么是文化?一些特定的现实例子会有所帮助.
我正在使用VS2010/2012,我想知道是否有办法(可能使用反射)来查看程序集的构建方式.
当我在Debug中运行时,我使用将#if DEBUG调试信息写入控制台.
但是,当你最终得到一堆程序集时,有没有办法看看它们是如何构建的?获取版本号很简单,但我无法找到如何检查构建类型.
c# build visual-studio-2010 .net-assembly visual-studio-2012
我们从第三方获得一个集会,例如Example.dll.最近供应商介绍了一些重大变化,但没有改变装配的名称.我可以将新装配重命名为例如Example2.dll并使用反射动态加载它吗?它没有强烈的名字.
我正在尝试使用以下命令行命令来编译我的项目中的代码程序集:
C:/"Program Files"/Unity/Editor/Data/Mono/bin/gmcs
-target:library -out:C:/Users/Austin/Desktop/PixelExpanse.dll
-recurse:C:/Users/Austin/Desktop/Projects/Repos/trunk/PixelExpanse/SpaceColonyRefactor/Assets/Source/*.cs
-d:RUNTIME -r:C:/"Program Files"/Unity/Editor/Data/Managed/UnityEngine.dll
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我相信,我正确地引用了UnityEngine.dll.要编译的代码包含对UnityEngine.UI和的引用UnityEngine.EventSystems.但是当我运行上面的命令时,我得到以下编译错误:
错误CS0234:名称空间"UnityEngine"中不存在类型或命名空间名称"EventSystems".你错过了装配参考吗?
从我通过谷歌搜索找到的东西,它看起来就像人们在使用4.6之前的程序集时所遇到的错误,因为那时引入了EventSystems和UI.但是我不知道在我引用的dll中我是如何错过的,因为Unity 5是唯一曾触及过这台计算机的版本.
作为附注,我已将此问题发布到Unity Answers并且尚未收到回复.我希望这是因为汇编编译超出了大多数用户选择的范围.因此,我在这里问.
我在运行时加载一个dll,如下所示:
var DLL = Assembly.LoadFile(@"..\..\BuildDLLs\myDLL.dll");
Run Code Online (Sandbox Code Playgroud)
我收到一个要求绝对路径的ArgumentException.
我不想使用绝对路径,我想使用相对路径.
我怎样才能做到这一点?
我创建了一个SSIS包(在VS 2013中),其中包含一个包含多个脚本组件的数据流任务。我需要添加另一个与现有数据流任务类似的数据流任务,因此我将其复制并粘贴到包中,并添加了优先级约束,以便新任务在旧任务之后运行。我根据业务需求更改了新数据流任务中脚本组件中的代码,并运行了该程序包。我很快意识到,当新数据流任务运行时,旧数据流中的脚本组件正在执行。奇怪的。
经过一些互联网搜索,我找到了以下页面:
http://kohera.be/blog/sql-server/the-dangers-of-copying-script-components-in-ssis/
其中描述了数据流任务的复制如何不更改新数据流中任何脚本组件中的程序集名称或根名称空间。显然,在运行时,新脚本的汇编将被旧脚本的汇编覆盖。网页上说可以通过将脚本组件复制到另一个程序包,然后再将其复制回原始程序包来解决此问题。大概会更改每个脚本组件的程序集名称。我很高兴它对他有用,但对我没有用。
我还尝试在此处的脚本编辑器中更改程序集名称:
但这也不起作用。旧脚本组件中的代码仍在新数据流中运行。我猜想根目录名称空间需要更改,但是它是灰色的,所以我不能手动更改它。因此,我仍在寻找一种不涉及从头开始重新创建脚本组件的解决方案,因为它们包含多个输出,每个输出中都有许多列。希望你能有一个答案。
.net-assembly ×10
c# ×6
.net ×3
build ×1
codebase ×1
copy-paste ×1
culture ×1
dll ×1
exe ×1
mono ×1
reflection ×1
satellite ×1
ssis ×1
system.net ×1
wpf ×1
xaml ×1