1. No se puede, porque los ensamblados de C# dependen del framework. El framework contiene todo, inclusive el traductor, recuerda que cuando ejecutas un programa hecho en .NET, el codigo es interpretado en tiempo de ejecucion por el runtime del framework.
2. En teoria si, pero nunca lo he probado, deberias hacer la prueba.