标签: .net-assembly

.NET核心程序集中非常特殊的PublicKey

我注意到核心.NET程序集的PublicKey = 00000000000000000400000000000000.它不仅比sn.exe允许生成(最小384位)更短,而且还有很多零.

如何用如此精美的公钥生成签名密钥?

.net strongname .net-assembly public-key

8
推荐指数
1
解决办法
409
查看次数

使用强名称签署DLL的好处

我有一个包含多个c#类库的ac#解决方案.我最近正在做一些研究,建议我的库中输出的程序集应该签名,并使用强名称签名.首先,我想知道我是否最好进步?从这些类库输出的库用于多个其他项目.

如果从我之前的问题建议我是的,我应该签署我的dll,我使用的.snk,这可以用于解决方案中的每个类库吗?或者每个类库必须是一键吗?

c# strongname assemblies .net-assembly assembly-signing

8
推荐指数
1
解决办法
5760
查看次数

从装配版本更新CCNET Last Build Label

我设法创建了一个使用GIT作为源代码控制的CI项目,以及一个基于CCNet构建标签标记程序集的MSBuild扩展,并提交更改后的标签

我有其他手动触发的项目将此版本发布到特定网站等.

我希望仪表板中的项目状态显示程序集中的构建标签(例如2.1.345.0),或者来自内置的dll,以便我们可以轻松查看在上次手动触发时发布的修订版本.

有关于更新构建的程序集信息的大量信息,但没有使用汇编的ifnfo版本来显示"最后构建标签"

任何想法任何人?我是否需要创建一个手动更新状态文件的任务?听起来有点狡猾.

提前致谢

cruisecontrol.net label revision version .net-assembly

7
推荐指数
1
解决办法
1400
查看次数

如何从WP7中的Stream或byte []加载程序集?

我想使用Stream或Byte数组在运行时加载程序集.

在.net中,您可以使用Assembly.Load(Byte[], Byte[]) http://msdn.microsoft.com/en-us/library/twt16z2x.aspx

在标准的Silverlight中,您可以使用AssemblyPart.Load() http://msdn.microsoft.com/en-us/library/cc190521%28v=VS.96%29.aspx

但在Windows Phone 7中,这些方法都不可用.

assemblies .net-assembly windows-phone-7

7
推荐指数
1
解决办法
1069
查看次数

CLR在SQL Server内部组装C#

  • 是否有可能在C#中创建一个大项目(很多函数),然后,
  • 然后,为它创建CLR程序集
  • 在SQL Server IN STORED PROC中,调用程序集中的函数,
  • 该表(我将传递给ASSEMBLY)在其他存储过程中计算...

    • 如果是这样,步骤是什么?

我在想这样的事情.

-- I have a stored proc that gets a table, let it be myStoredProcTable

--FIST ENABLE DATA ACCESS
EXEC sp_serveroption 'TheServerName', 'DATA ACCESS', TRUE

--main.sql calls yStoredProcTable.sql and the calls functionAssembly
SELECT  *
INTO    #tmpTable
FROM    OPENQUERY(SERVERNAME, 'EXEC test.dbo.myStoredProcTable 1')


-- pass the table to assembly
-- how would i pass the table to assembly code?, Is this POSSIBLE?
    EXEC functionAssembly #tmpTable
Run Code Online (Sandbox Code Playgroud)

- - - - - - - - …

c# xml sql com .net-assembly

7
推荐指数
1
解决办法
1万
查看次数

如何使动态加载的程序集中的设置提供程序可用于反射?

这个问题之后,我在我们正在开发的旧版C#应用程序中成功创建了自定义设置提供程序.它通过SettingsProvider属性引用:

public sealed class MySettings : SettingsProvider
{
    ...
}

[SettingsProvider(typeof(MySettings))]
internal sealed partial class Settings {}
Run Code Online (Sandbox Code Playgroud)

但是,现在我遇到了另一个问题.

我们的客户端应用程序包含一个autoupdate工具,它的实现使得大部分客户端 - 包括上面的类 - 都构建在一个DLL中(我们在这里称之为client.dll),然后由EXE使用.如果需要,EXE首先检查更新并从更新服务器下载最新的更新,用其较新版本(包括client.dll)替换所有DLL等.为了能够在运行时替换DLL,它无法静态链接到它们.所以在更新之后,它加载client.dll并像这样运行它:

Assembly assy = Assembly.LoadFile(
        AppDomain.CurrentDomain.BaseDirectory + "client.dll");
object frm = assy.CreateInstance("Client.Forms.MainForm");
Application.Run((Form)frm);
Run Code Online (Sandbox Code Playgroud)

这样做的不幸结果是框架无法在动态加载的程序集中找到我的自定义设置提供程序类.我尝试使用LoadFrom而不是LoadFile上面但它没有帮助.到目前为止,我发现的唯一可行的解​​决方案是在loader exe中实现一个与真实设置提供程序同名的代理类,框架可以找到它.然后,代理从客户端程序集中实例化实际设置提供程序,并委派对它的所有调用.

这似乎有效但我不满意.有没有办法帮助框架直接在动态加载的程序集中查找我的类?

更新

我收到的错误消息:

System.Configuration.ConfigurationErrorsException: Failed to load provider type: Client.Properties.MySettings, Client, Version=4.0.1341.0, Culture=neutral, PublicKeyToken=null.
   at System.Configuration.ApplicationSettingsBase.get_Initializer()
   at System.Configuration.ApplicationSettingsBase.CreateSetting(PropertyInfo propInfo)
   at System.Configuration.ApplicationSettingsBase.EnsureInitialized()
   at System.Configuration.ApplicationSettingsBase.get_Properties()
   at System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
   at System.Configuration.SettingsBase.get_Item(String propertyName) …
Run Code Online (Sandbox Code Playgroud)

c# reflection .net-assembly settingsprovider

7
推荐指数
1
解决办法
1386
查看次数

在SQL Server 2012中注册CLR功能(基于WCF)

我有一个基于CLR的存储过程,用于MsmqIntegrationBinding将消息发布到远程MSMQ.在SQL Server 2005中一切正常,但现在有一个从2005年到2012年的升级,假设发生.我尝试在SQL Server 2012中注册CLR(SP),但在注册System.ServiceModell.DLL时出现了以下错误.

Msg 6544,Level 16,State 1,Line 1
为程序集'System.ServiceModel'创建程序集失败,因为程序集'microsoft.visualbasic.activities.compiler'格式错误或不是纯.NET程序集.无法验证的PE标头/本机存根.

我搜索了解决方案,似乎很少有其他人遇到同样的问题,而现在还没有解决方法.

使用的主要原因MSMQIntegrationBinding是我们希望确保每条消息只发送一次.正如你所看到的那样,我ExactlyOnce对普通system.messaging类中没有的属性非常感兴趣.我们处理数千条消息并且消息的排序非常重要,每条消息都标有一个id,如果发送的任何消息的id小于先前发送的消息,则客户端系统停止(大问题).

我还使用system.messaging重写了CLR存储过程.我只是需要建议是否可以支持我上面提到的场景.

sql wcf sqlclr .net-assembly sql-server-2012

7
推荐指数
1
解决办法
2241
查看次数

引用的DLL未被复制到引用项目

这个问题可能已被多次询问过,也许我只是在使用谷歌的搜索功能以及谷歌这个问题,但我还没有找到这个问题的答案.

我目前有两个项目,项目X,项目Y和项目Z(仅包含映射)

Project X是一个FluentNhibernate项目,它包含我的sessionfactories和类似的东西.所以这也是映射加载和事物的地方(这很重要,我怀疑它可能是我遇到的问题的全部原因)

现在,在Project X中,我引用了一个使用Microsoft.SqlServer.Types.dll的程序集.

项目Y是一个使用项目X进行数据库连接的服务.

所有的probjects都可以在我的开发机器上完美地查找和运行,但是当部署到我们的服务器时,它们无法正常运行(运行时错误).错误是非常模糊的,因为它指向缺少FluentNHibernate程序集,但事实并非如此.

Procmon.exe幸运地显示代码试图加载Microsoft.SqlServer.Types.dll,因为服务器没有安装SQL Server(我的客户端不是,但它有一个管理工作室,很可能安装此.DLL以及) .

到目前为止一直很好,复制了DLL并且它工作了(耶!).

现在我想我将程序集添加到项目X以确保使用项目X将此引用复制到其他项目.这没有发生....所以我尝试将"复制本地"设置设置为true.

遗憾的是,这仍然没有将.dll复制到引用项目Y.

有没有办法让这种情况发生,或者这个Visual Studio是否聪明并且意识到Project Y不需要这个.dll因此拒绝复制它?

(由于Project Z需要实际参考,Project X加载此程序集@运行时,Z和X之间没有"硬"参考)

任何Stackoverflow天才都可以对此有所了解,因为老实说,我想知道为什么它会以这种方式运行(理想情况下是一种让它表现得像我想要的方式).

.net reference visual-studio-2010 fluent-nhibernate .net-assembly

7
推荐指数
2
解决办法
7293
查看次数

为什么警告CS1607"为'产品版本'指定的版本不是正常的'major.minor.build.revision'格式"生成的?

今天我得到了一个为'产品版本'指定的版本不符合正常的'major.minor.build.revision'格式警告.

这与使用有关AssemblyInformationalVersionAttribute.

我的程序集属性是:

[assembly: AssemblyInformationalVersion("XXX 1.1.0")]
[assembly: System.Runtime.InteropServices.ComVisible(false)]
Run Code Online (Sandbox Code Playgroud)

基本上编译器抱怨XXX 1.1.0这看起来不像x.y.z.r.来自MSDN:

信息版本以字符串格式提供程序集的附加版本信息.它仅供参考,不在运行时使用.虽然您可以指定任何文本,但如果字符串不是程序集版本号使用的格式,或者如果它采用该格式但包含通配符,则会在编译时显示警告消息.这个警告是无害的.

所以他们说可能会发生无害的警告.问题是,它破坏了我的构建.我甚至无法抑制CS1607警告(我在项目级别尝试过,没有效果),如以下错误所示http://connect.microsoft.com/VisualStudio/feedback/details/275197/assemblyinformationalversion-should-not -generate-cs1607

实际上,在我将本地化资源添加到项目之前,一切都很好(没有警告).我以前MyResources.resx在项目中有一个文件.我添加了一个本地化MyResources.fr.resx文件,这个资源是警告的来源(或者至少:如果我从项目中删除此文件,它会在没有警告的情况下编译).

我没有看到CS1607(与x64与x86相关)AssemblyInformationalVersionAttribute和本地化资源文件之间的任何链接......

我怎么能解决我的项目,所以我可以使用XXX 1.1.0AssemblyInformationalVersionAttribute,没有任何(即使是无害的)警告?

压制CS1607警告我不是那么好(在错误引用时可能有用),但我甚至没有设法压制它.

请注意我通过谷歌搜索发现它是CS1607,编译器从未返回实际的警告代码.

还要注意我的项目目标.Net 2.0,并转移到.Net 4.0修复了这个问题(当然我不能这样做).

欢迎任何解释.

PS: CS1607:为'文件版本'指定的版本不是正常的'major.minor.build.revision'格式在.NET中问题是不相关的(不是关于AssemblyInformationalVersion)


编辑:谢谢Hans Passant.从您的回答中,我了解到AssemblyInformationalVersion用于生成ProductVersionWin32 VersionInfo结构中可用的两个值.

  • 如果AssemblyInformationalVersion属性为空,则AssemblyVersion使用该属性.
  • 如果AssemblyInformationalVersionx.y.z,则两个ProductVersion值均为x.y.z.
  • 如果AssemblyInformationalVersion是另一个字符串,则数值值ProductVersion不设置(0.0.0),并且仅设置文本ProductVersion值. …

.net c# warnings visual-studio-2010 .net-assembly

7
推荐指数
1
解决办法
2420
查看次数

为什么 GetManifestResourceStream 返回 null(使用 dotnet core)

使用dotnet核心:.NET Core SDK版本:3.1.102

为什么以下返回 null

typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")
Run Code Online (Sandbox Code Playgroud)

我验证了该文件存在于解决方案中,并且在属性“嵌入式资源”中具有构建操作

.net c# reflection .net-assembly .net-core

7
推荐指数
1
解决办法
4582
查看次数