Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将自定义生成数据添加到.net dll_C#_.net_Vb.net_Winforms_Visual Studio 2010 - Fatal编程技术网

C# 如何将自定义生成数据添加到.net dll

C# 如何将自定义生成数据添加到.net dll,c#,.net,vb.net,winforms,visual-studio-2010,C#,.net,Vb.net,Winforms,Visual Studio 2010,我正在开发一个winforms应用程序,我们每天在一个开发服务器上部署很多次DLL。我们希望能够找出谁建立了dll 我已尝试将System.Security.Principal.WindowsIdentity.GetCurrent().Name添加到程序集信息,但只需常量 是否有某种方法可以在生成期间将用户名嵌入dll?并提供创建自定义程序集属性的示例。根据这些示例,您可以创建如下内容: [AttributeUsage(AttributeTargets.Assembly)] public cla

我正在开发一个winforms应用程序,我们每天在一个开发服务器上部署很多次DLL。我们希望能够找出谁建立了dll

我已尝试将System.Security.Principal.WindowsIdentity.GetCurrent().Name添加到程序集信息,但只需常量

是否有某种方法可以在生成期间将用户名嵌入dll?

并提供创建自定义程序集属性的示例。根据这些示例,您可以创建如下内容:

[AttributeUsage(AttributeTargets.Assembly)]
public class AssemblyBuildSystem : System.Attribute
{
    private string _strBuildSystemName;

    public AssemblyBuildSystem(string buildSystemName)
    {
        _strBuildSystemName = buildSystemName;
    }

    public BuildSystemName { get { return _strBuildSystemName; } }
}
这将为您提供一个自定义的“AssemblyBuildSystemName”属性,您可以通过反射进行检查。问题在于确保它在每次构建时都是正确的,因为属性只能接受常量参数

可以按常规方式将属性添加到程序集:

[Assembly: AssemblyBuildSystemName("Bob's Development Machine")]
缺点是您不想让它受源代码控制,因此它可能应该驻留在特定于每个开发人员机器的非源代码控制的.cs文件中。您必须依靠每个开发人员来创建文件,确保其不受源代码控制,并确保内容准确无误


您可以将主机名作为条件编译常量传入,或者作为预构建步骤创建并添加该文件,但是在某个时候,使用构建服务器或修改部署过程会变得更容易。

使用构建服务器怎么样?我们的团队非常庞大,我们不能依赖开发人员将他们的名字添加到文件中。我们希望在构建时读取用户id并将其嵌入到dll中。我们可以用.resx文件做些什么吗?我想不出来。如果希望它出现在AssemblyInfo中,则需要定义一个属性,并且属性参数必须是常量。我认为您最好创建一个脚本,读取当前用户名并更新.cs文件,然后将其作为预构建脚本运行。我创建了一个新的控制台应用程序,该应用程序读取assemblyinfo.cs并修改属性(添加编译dll的人员usersname)并将此新应用程序的exe添加到我的windows应用程序的预生成事件中。因此,现在当有人编译dll时,他们的assemblyinfo.cs文件将用他们的登录名更新,然后构建dll,在运行时,我们可以读取属性并获取构建dll的人的名称。