标签: .net-assembly

从装配版本更新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万
查看次数

如何从角色获取数据

我正在Unity中使用Assembly C#开发一个项目.我尝试获得特殊字符,例如é,但在控制台中它只显示一个空白字符:"".例如翻译"你好吗?" 应该返回"CómoEstás?",但它会返回"Cmo Ests".我将返回字符串"Cmo Ests"放在一个字符数组中,并意识到它是一个非空的空白字符.我正在使用Encoding.UTF8,当我这样做时:

char ch = '\u00e9';
print (ch);
Run Code Online (Sandbox Code Playgroud)

它将打印"é".我尝试使用以下方法从给定字符串中获取字节:

byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(temp);
Run Code Online (Sandbox Code Playgroud)

在翻译"你好吗?"时,它将返回一个字节字符串,但对于特殊字符,如é,我得到一系列字节239,191,189,这是一个替换字符.

我需要从字符中检索哪些类型的信息才能准确地确定它是什么字符?我是否需要对Google提供给我的信息做些什么,或者是其他什么?我需要一个一般情况,我可以放在我的程序中,并将适用于任何输入字符串.如果有人可以提供帮助,我们将不胜感激.

这是引用的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using System.Collections;
using System.Net;
using HtmlAgilityPack;


public class Dictionary{
string[] formatParams;
HtmlDocument doc;
string returnString;
char[] letters;
public char[] charString;
public Dictionary(){
    formatParams = new string[2];
    doc = new HtmlDocument();
    returnString = "";
}

public string Translate(String input, String languagePair, Encoding encoding)
    {
        formatParams[0]= input;
        formatParams[1]= languagePair;
        string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", …
Run Code Online (Sandbox Code Playgroud)

c# utf-8 google-translate .net-assembly unity-game-engine

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

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

这个问题之后,我在我们正在开发的旧版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
查看次数

c#AssemblyInfo.cs"bug"

有人可以解释如何正确制作装配信息吗?

这是我的AssemblyInfo.cs:

[assembly: AssemblyTitle("Title")]
[assembly: AssemblyDescription("Description")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Mycompany")]
[assembly: AssemblyProduct("ProductName")]
[assembly: AssemblyCopyright("Copyright ©")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: ComVisible(true)]

[assembly: Guid("xxxxxx-xxxxx-xxxxx")]    

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0")]
[assembly: NeutralResourcesLanguageAttribute("en")]
Run Code Online (Sandbox Code Playgroud)

这就是它在属性窗口中的显示方式:细节

您可以看到Description和Language与AssemblyInfo.cs中的不同.

AssemblyCompany也有问题,因为当我在ccleaner中打开启动密钥时,我的程序的公司字段为空...在此输入图像描述

我究竟做错了什么?

c# .net-assembly

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

为什么警告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
查看次数

Assembly.Load和Assembly.LoadFrom差异?

我的应用程序通过AppDomain.CurrentDomain.AssemblyResolve事件加载它需要的程序集.程序集是执行程序集的资源.

private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
{
    var executingAssembly = Assembly.GetExecutingAssembly();
    var assemblyName = new AssemblyName(args.Name);
    var resPath = assemblyName.Name + ".dll";

    using (var stream = executingAssembly.GetManifestResourceStream(resPath))
    {
        if (stream != null)
        {
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);

            return Assembly.Load(buffer);
        }
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

通常这工作正常,但正在加载的程序集包含某些控件的默认样式,这些控件将不会被应用.但是,如果我不通过Assembly.Load加载程序集,但将其保存到文件并通过Assembly.LoadFrom一切正常加载它.

那些有什么区别?为什么在直接从内存加载程序集时不起作用 - 或者为什么在首次将其保存到磁盘然后加载它时它Assembly.LoadFrom是否有效?

我很困惑,我想直接从内存加载程序集而不先保存它们.

c# wpf .net-assembly

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

运行时无法加载文件或程序集'Newtonsoft.Json,Version = 6.0.0.0 ...“,间接依赖程序集继续寻找旧版本

我有一个C#项目,它直接引用了Newtonsoft.Json和其他一些引用(它间接引用了Newtonsoft.Json)。我想在所有位置将Newtonsoft.Json版本从6.0.8升级到最新的12.0.2。

最初我得到了参考程序集无法解决的问题,但是在搜索之后,我尝试将绑定放入app.config中,现在可以成功构建解决方案了:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
Run Code Online (Sandbox Code Playgroud)

我的项目如下所示:

<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>True</Private>
    </Reference>
Run Code Online (Sandbox Code Playgroud)

现在,问题在运行时调用库时出现,它引发以下错误:

mymethod引发了一个异常,将重试:无法加载文件或程序集“ Newtonsoft.Json,版本= 6.0.0.0,Culture =中性,PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。”

使用AsmSpy,似乎间接引用是根本原因:

参考:Newtonsoft.Json,版本= 6.0.0.0,文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed Newtonsoft.Json,版本= 6.0.0.0,文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed来源:Microsoft.Azure.KeyVault,版本6.0.0.0 = 2.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35 6.0.0.0(由Microsoft.Azure.KeyVault.WebKey,版本= 2.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35 6.0.0.0由Microsoft.Rest.ClientRuntime,版本= 2.0 .0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 6.0.0.0(Microsoft.Rest.ClientRuntime.Azure,版本= 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

通过启用诊断项目输出,在构建时看起来不错:

2>  Unified primary reference "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". (TaskId:19)
2>      Using …
Run Code Online (Sandbox Code Playgroud)

.net c# json json.net .net-assembly

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